首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中应用rowSums()来根据rowsum值选择前n行?

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

Stack Overflow用户
提问于 2015-06-09 09:29:33
回答 2查看 1.9K关注 0票数 0

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

代码语言:javascript
复制
>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中非常新手,我不能写优化的代码来实现这一点。请帮帮我,提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-06-09 09:34:01

这将按rowSumsdata.framedata.matrix进行排序

代码语言:javascript
复制
m[sort(rowSums(m), index=T, decreasing=TRUE)$ix, ]

如果只想要满足阈值的行,则不需要排序

代码语言:javascript
复制
m[rowSums(m) > threshold, ]

如果要添加包含rowSum值的列

代码语言:javascript
复制
m <- cbind(m, rowSums(m))
票数 1
EN

Stack Overflow用户

发布于 2015-06-10 08:55:27

感谢你@6pool的回答。我使用下面的代码来实现这个目标。

代码语言:javascript
复制
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, ])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30721624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档