我正在从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的新手,我无法编写优化代码来实现这一目标。请帮助我,提前谢谢。
答案 0 :(得分:1)
这会按data.frame
data.matrix
或rowSums
进行排序
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, ])