使用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)]