在R中用dplyr筛选数据框:保留含某变量全部值的组合
使用dplyr筛选同时包含Blue和Red颜色的玩具记录
需求说明
从生成的tTable数据框中,提取所有日期+玩具类型组合下同时存在Blue和Red两种颜色的记录,得到目标数据框tDesired。
解决方案(dplyr实现)
通过分组检查每组颜色完整性的方式实现筛选,代码如下:
# 加载dplyr包 library(dplyr) # 筛选符合条件的记录 tDesired <- tTable %>% # 按日期和玩具类型分组 group_by(date, toy) %>% # 仅保留组内同时包含Blue和Red的记录 filter(all(c("Blue", "Red") %in% col)) %>% # 取消分组,恢复普通数据框结构 ungroup()
代码解释
group_by(date, toy):将数据按「日期+玩具类型」分组,确保针对每个独立的(date, toy)组合检查颜色覆盖情况filter(all(c("Blue", "Red") %in% col)):筛选出组内同时包含两种目标颜色的记录,all()函数保证两种颜色都存在于当前组的col列中ungroup():取消分组状态,避免后续操作受分组影响
结果验证
上述代码生成的tDesired与题目给出的tTable[-c(15, 18, 8), ]完全一致,符合需求。
内容的提问来源于stack exchange,提问作者Mr Frog
相关产品推荐
相关产品推荐

