[英]How to apply rowSums() in R to select top n rows on the basis of rowsum value?
我正在從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中是一個新手,我無法編寫優化的代碼來實現這一目標。 請幫助我,在此先感謝。
這將按data.frame
對data.frame
或data.matrix
進行rowSums
m[sort(rowSums(m), index=T, decreasing=TRUE)$ix, ]
如果僅希望滿足閾值的行,則無需排序
m[rowSums(m) > threshold, ]
如果要添加包含rowSum
值的列
m <- cbind(m, rowSums(m))
謝謝@ 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, ])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.