我正在从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)现在我不知道如何将行和值组合到矩阵'm‘中。我在R中非常新手,我不能写优化的代码来实现这一点。请帮帮我,提前谢谢。
发布于 2015-06-09 09:34:01
这将按rowSums对data.frame或data.matrix进行排序
m[sort(rowSums(m), index=T, decreasing=TRUE)$ix, ]如果只想要满足阈值的行,则不需要排序
m[rowSums(m) > threshold, ]如果要添加包含rowSum值的列
m <- cbind(m, rowSums(m))发布于 2015-06-10 08:55:27
感谢你@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, ])https://stackoverflow.com/questions/30721624
复制相似问题