如果条件匹配,我想删除某些行组。例如
Group X1 X2 X3
1 0.2 1 2
1 0.8 2 4
1 0.0 1 2
2 0.4 1 3
2 0.2 2 3
2 0.3 2 4
2 0.1 1 2
3 0.5 4 2
3 0.4 1 2
3 0.1 3 1
假设我想删除group-1,因为它包含x1的值'0'。如何删除。
答案 0 :(得分:2)
我们可以使用data.table
library(data.table)
setDT(df1)[, if(!any(!X1)) .SD,by = Group]
或使用dplyr
library(dplyr)
df1 %>%
group_by(Group) %>%
filter(!any(!X1))
答案 1 :(得分:1)
你可以在基础R中轻松完成,不需要像这样分组:
# check in which groups X1 == 0 appears:
groups_to_remove <- unique(df$Group[df$X1 == 0])
# just to double check the result:
groups_to_remove
#[1] 1
# remove those groups from data:
df[!df$Group %in% groups_to_remove, ]
# Group X1 X2 X3
#4 2 0.4 1 3
#5 2 0.2 2 3
#6 2 0.3 2 4
#7 2 0.1 1 2
#8 3 0.5 4 2
#9 3 0.4 1 2
#10 3 0.1 3 1
如果您更喜欢“单行”,可以使用例如:
subset(df, !Group %in% unique(Group[X1 == 0]))
# Group X1 X2 X3
#4 2 0.4 1 3
#5 2 0.2 2 3
#6 2 0.3 2 4
#7 2 0.1 1 2
#8 3 0.5 4 2
#9 3 0.4 1 2
#10 3 0.1 3 1
答案 2 :(得分:0)
首先使用data.matrix(),然后使用矩阵过滤
x=data.matrix(your data)
x[-((x[,1]==1) & (x[,2]==0)),]