在R中,我有一个数据框(H1
),每列有两列,89列有数字数据,最后一列有行(我有1000行)。
我需要选择我的任何数字列> 15的行。如果我只想按一列选择行,我可以这样做:
H1<-H2[H2[,3]>15,]
但不是所有89列中的任何一列。我试过了 -
H1<-H2[H2[,3:91]>15,]
但这只会返回一堆NAs。
答案 0 :(得分:1)
使用data.table(data.frame扩展名):
library(data.table)
setDT(H1)
H1[, i := any(unlist(lapply(.SD, function(x) x>15))), seq_len(nrow(H1)), .SDcols=3:92
][i==TRUE
][,i:=NULL]
答案 1 :(得分:1)
您可以在基本R中使用rowSums
来计算逻辑索引,然后按该索引对数据进行子集化。这是一个例子:
set.seed(123)
DF <- data.frame(id = sample(letters[1:3], 20, TRUE),
matrix(sample(1:25, 100, TRUE), ncol = 5))
现在计算索引:
idx <- rowSums(DF[2:6] > 15) >= 1L
并使用它来对数据进行子集化:
DF[idx, ]
或两个步骤:
DF[rowSums(DF[2:6] > 15) >= 1L, ]
在这里,我使用了第2:6列。在您的数据中,您可以将其替换为3:92或您需要的数据。