簡體   English   中英

如何在R中應用rowSums()以基於rowum值選擇前n個行?

[英]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.framedata.framedata.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM