R dataframe中查找loc列不同分组共有的name和date字段值
实现思路
统计每个name+date组合对应的loc唯一值数量,筛选出符合要求的组合对应的所有记录即可:
- 如果需要找所有loc分组共有的记录,将筛选条件修改为
n_distinct(loc) == n_distinct(df1$loc) - 如果需要找至少存在于2个loc分组的记录,使用默认筛选条件即可
完整实现代码
# 加载dplyr包 library(dplyr) # 模拟数据 df1 <- data.frame(loc = c("Rufl","Rufl","Rufl","Rufl","Assp","Assp","Assp","Assp"), name = c("ABC","DEF","GHI","JKL","ABC","PQR","RTU","JKL"), date = c("2021-06-18", "2021-06-21", "2021-07-18", "2021-06-13", "2021-06-18", "2021-06-21", "2021-06-12", "2021-06-09")) # 核心计算逻辑 result <- df1 %>% group_by(name, date) %>% # 筛选同时出现在至少2个loc分组中的(name,date)组合 filter(n_distinct(loc) >= 2) %>% ungroup()
输出结果
运行上述代码得到的result如下(你示例中的Aspp为笔误,原始数据中loc取值为Assp):
| loc | name | date |
|---|---|---|
| Rufl | ABC | 2021-06-18 |
| Assp | ABC | 2021-06-18 |
内容的提问来源于stack exchange,提问作者millie0725
相关产品推荐
相关产品推荐

