首页 > 解决方案 > 如果任何列包含-1,则排除

问题描述

如果我的数据集中大约 80 列中的任何一列的值为 -1,我必须排除数据。总列数为 100,其他 20 列允许有 -1 值。我知道这可以通过使用子集来完成,例如:

keep_data <- subset(foo, Var1 != -1 | Var2 != -1 | Var3 != -1 ....... upto Var80)

这可以通过我不需要传递子集中的所有 80 个变量的任何其他方式来完成,而是可以传递一个列表或其他一些方法吗?

标签: rsubset

解决方案


如果需要,您可以定义cols为字符向量而不是数字

cols <- 2:4 #Columns which we'll check for -1

# Remove rows for which any of cols (defined above) are -1
subset(df, !rowSums(df[cols] == -1))

#You can also use brackets instead of subset
df[!rowSums(df[cols] == -1),]

推荐阅读