根据列条件从数据框中批量删除行

时间:2020-02-27 04:32:07

标签: r

我想根据列的条件删除所有行。下面的代码生成了示例测试数据

cat <<EOF | istioctl manifest generate --set values.global.istioNamespace=istio-system -f - > ./istio-egressgateway-with-sni-proxy.yaml . . .

数据框具有3列:索引,组和计数。如果该组的任何一行的计数都为1,则我想删除属于同一组的所有行。因此,在上述数据框中,由于第一行的count =,所以我想从数据框中删除整个索引1、2和3。第1行和第2行和第3行属于同一组“ a”。结果数据帧应如下所示:

test_data <- data.frame(index = c(1,2,3,4,5), group = c("a", "a", "a", "b", "c"), count = c(1,2,2,3,4))

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以在基数R中将avesubset一起使用,并选择count为1时没有值的组。

subset(test_data, ave(count != 1, group, FUN = all))

#  index group count
#4     4     b     3
#5     5     c     4

使用dplyr可以通过以下方式完成:

library(dplyr)
test_data %>% group_by(group) %>% filter(all(count != 1))

data.table

library(data.table)
setDT(test_data)[, .SD[all(count != 1)], group]