如何查找矩阵中填充的值最多的行?
How to find rows with most values filled in a matrix?
给定一个像这样的矩阵 (mat1):
mat1 <- matrix(c(1, "", 2, 3, 4, "", 2, 4, "", 5, 2, 1, 4, "", 3, 2, "", 3, "", ""), nrow = 4, ncol = 5)
我将如何找到具有最多非空字符串值的前 3 行?例如在mat1中,第1行有3个值,第2行有2个值,第3行有4个值,第4行有4个值。
有没有一种方法可以让我以某种频率 table 或至少 return 顶部行的向量来制表?
如果我们创建一个函数,我们可以转换为'long'格式,subset
出空白元素,并得到行名称的dim属性的频率
f1 <- function(mat, n) {
row.names(mat) <- seq_len(nrow(mat))
head(sort(table(subset(as.data.frame.table(mat),
Freq != "")$Var1), decreasing = TRUE), n)
}
f1(mat1, 3)
# 3 4 1
# 4 4 3
显示的输出是一个命名向量,其名称表示行索引或行名称,值表示非空白的频率。用户指定的 n
参数给出顶部 n
非空白行
你可以这样做:
# Your matrix
mat1 <- matrix(c(1, "", 2, 3, 4, "", 2, 4, "", 5, 2, 1, 4, "", 3, 2, "", 3, "", ""), nrow = 4, ncol = 5)
# Transforming to data frame
df_mat <- as.data.frame(mat1)
# Quantity of null values
for (i in 1:nrow(df_mat)) {
df_mat$COUNT[i] <- sum(df_mat[i,] == "")
}
# Ordering the data frame
df_mat <- arrange(df_mat,desc(COUNT))
给定一个像这样的矩阵 (mat1):
mat1 <- matrix(c(1, "", 2, 3, 4, "", 2, 4, "", 5, 2, 1, 4, "", 3, 2, "", 3, "", ""), nrow = 4, ncol = 5)
我将如何找到具有最多非空字符串值的前 3 行?例如在mat1中,第1行有3个值,第2行有2个值,第3行有4个值,第4行有4个值。
有没有一种方法可以让我以某种频率 table 或至少 return 顶部行的向量来制表?
如果我们创建一个函数,我们可以转换为'long'格式,subset
出空白元素,并得到行名称的dim属性的频率
f1 <- function(mat, n) {
row.names(mat) <- seq_len(nrow(mat))
head(sort(table(subset(as.data.frame.table(mat),
Freq != "")$Var1), decreasing = TRUE), n)
}
f1(mat1, 3)
# 3 4 1
# 4 4 3
显示的输出是一个命名向量,其名称表示行索引或行名称,值表示非空白的频率。用户指定的 n
参数给出顶部 n
非空白行
你可以这样做:
# Your matrix
mat1 <- matrix(c(1, "", 2, 3, 4, "", 2, 4, "", 5, 2, 1, 4, "", 3, 2, "", 3, "", ""), nrow = 4, ncol = 5)
# Transforming to data frame
df_mat <- as.data.frame(mat1)
# Quantity of null values
for (i in 1:nrow(df_mat)) {
df_mat$COUNT[i] <- sum(df_mat[i,] == "")
}
# Ordering the data frame
df_mat <- arrange(df_mat,desc(COUNT))