查看列子集中至少有一列包含零的所有行

时间:2018-01-26 21:09:56

标签: r

我有一个数据框

df <- data.frame(id = c(1:10), envr_val1 = c(0:9), envr_val2 = c(1:9,0), 
count = round(rnorm(mean = 10, sd = 10, n = 10)))

我想查找envr_val1envr_val2中至少有一个为0的所有行,但count为零的行。

在真实数据集中,我查找的列数很大,因此我在对象中保存了感兴趣的列的名称:

colzerofix <- c('envr_val1', 'envr_val2')

我尝试过的事情:

df[colzerofix == 0,]
df[which(pmin(unlist(df[,colzerofix]))==0),]

1 个答案:

答案 0 :(得分:1)

df[Reduce("|", lapply(colzerofix, function(x) df[,x] == 0)) & df$count != 0,]
#OR
df[rowSums(df[colzerofix] == 0, na.rm = TRUE) > 0 & df$count != 0,]