使用R中的条件对数据帧中的特定组进行排序

使用R中的条件对数据帧中的特定组进行排序,r,R,我需要帮助才能在组中对数据框进行子集,以下是数据框: Group_name Event colomn1 colomn2 colomn3 colomn4 Group1 1 1 1 1 0 Group1 2 2 2 4 2 Group1 3 2 2 4 2 Group2 1 6 6 6 0 Group3 1 2 2 2 0 Group3 2 2 2 2 0 Group4 1 2

我需要帮助才能在组中对数据框进行子集,以下是数据框:

Group_name  Event   colomn1 colomn2 colomn3 colomn4
Group1  1   1   1   1   0
Group1  2   2   2   4   2
Group1  3   2   2   4   2
Group2  1   6   6   6   0
Group3  1   2   2   2   0
Group3  2   2   2   2   0
Group4  1   2   2   5   3
Group4  2   2   2   2   0
我希望保留列4值为0的组,并删除其他组:

所以我应该得到:

Group_name  Event   colomn1 colomn2 colomn3 colomn4
Group2  1   6   6   6   0
Group3  1   2   2   2   0
Group3  2   2   2   2   0

你有没有在R中执行此操作的想法?

使用
dplyr
,你可以执行以下操作:

df %>%
 group_by(Group_name) %>%
 filter(all(colomn4 == 0))

  Group_name Event colomn1 colomn2 colomn3 colomn4
  <chr>      <int>   <int>   <int>   <int>   <int>
1 Group2         1       6       6       6       0
2 Group3         1       2       2       2       0
3 Group3         2       2       2       2       0
data[ave(data$colomn4, data$Group_name, FUN = sum) == 0,]

  Group_name Event colomn1 colomn2 colomn3 colomn4
4     Group2     1       6       6       6       0
5     Group3     1       2       2       2       0
6     Group3     2       2       2       2       0

或:

或(由@Ronak Shah提议):


使用base R,您可以执行以下操作:

df %>%
 group_by(Group_name) %>%
 filter(all(colomn4 == 0))

  Group_name Event colomn1 colomn2 colomn3 colomn4
  <chr>      <int>   <int>   <int>   <int>   <int>
1 Group2         1       6       6       6       0
2 Group3         1       2       2       2       0
3 Group3         2       2       2       2       0
data[ave(data$colomn4, data$Group_name, FUN = sum) == 0,]

  Group_name Event colomn1 colomn2 colomn3 colomn4
4     Group2     1       6       6       6       0
5     Group3     1       2       2       2       0
6     Group3     2       2       2       2       0

或使用
数据。表格

DT <- as.data.table(data)
DT[, exclude := all(colomn4 == 0), by = Group_name][(exclude)]


DT@Ronak Shah这是我试图实现的目标,我把它添加到了我的帖子中。谢谢:)好的,非常感谢您使用我会做的:
DT[,if(all(column4==0)).SD,by=Group\u name]
谢谢您的帮助:)
DT <- as.data.table(data)
DT[, exclude := all(colomn4 == 0), by = Group_name][(exclude)]