如何在R中应用rowSums()以根据rowsum值选择前n行?

时间:2015-06-09 01:29:33

标签: r dataframe

我正在从csv文件中读取数据。我想总结读取数据的行,然后我想根据rowsum值对它们进行排序。现在,我想根据rowsum值上的指定阈值选择行数。我试了tempdata.csv,其中包含以下数据:

>data <- read.csv("tempdata.csv")
>data

        X Doc1 Doc2 Doc3 Doc4
1    book    2    0    2    1
2   table    0    2    0    1
3    room    0    2    0    0
4   chair    0    0    2    0
5 speaker    0    0    0    0

>m <- data.matrix(data[2:length(data)], rownames.force=NA)
>(dimnames(m)[[1]] <- data[,1])
>rs1 <- rowSums(m, na.rm = FALSE)

现在我不知道如何将rowum值与矩阵“m”结合起来。我是R的新手,我无法编写优化代码来实现这一目标。请帮助我,提前谢谢。

2 个答案:

答案 0 :(得分:1)

这会按data.frame

data.matrixrowSums进行排序
m[sort(rowSums(m), index=T, decreasing=TRUE)$ix, ]

如果您只想要符合阈值的行,则无需排序

m[rowSums(m) > threshold, ]

如果要添加包含rowSum

的列
m <- cbind(m, rowSums(m))

答案 1 :(得分:0)

谢谢@ 6pool的回答。我使用以下代码来实现目标。

data <- read.csv("tiny.csv")
data2 <- data[, 2:length(data)]
data2 <- transform(data2, sum=rowSums(data2))
(dimnames(data2)[[1]] <- data[,1])
data3 <- data2[order(-data2$sum),]
### specify the threshold to select the number of rows
threshold = 3
(data4 <- data3[data3$sum>= threshold, ])