r - R dplyr:没有聚合函数的分组
问题描述
我想在以下数据集上执行没有聚合函数的 group_by:
df <- data.frame(ID = c(1,1,1,2,2,3,3,3,3),
product = c("A","B","C","D","E","A","A","B","C"),
year = c(2018,2018,2019,2018,2018,2017,2018,2019,2018))
ID product year
1 1 A 2018
2 1 B 2018
3 1 C 2019
4 2 D 2018
5 2 E 2018
6 3 A 2017
7 3 A 2018
8 3 B 2019
9 3 C 2018
我想创建 2 个单独的数据集:一个用于产品,一个用于年份。问题是当我尝试 group_by 时,它需要一个聚合函数,而我不想要那个。在一种情况下,我只需要 ID 和 PRODUCT 的唯一组合,在另一种情况下需要 ID 和 YEAR 的唯一组合(所以 2 个单独的数据框)
产品
ID product
1 1 A
2 1 B
3 1 C
4 2 D
5 2 E
6 3 A
7 3 B
8 3 C
年:
ID year
1 1 2018
2 1 2019
3 2 2018
4 3 2017
5 3 2018
6 3 2019
解决方案
您不需要group_by
此处,因为您想要选定列的唯一行。如果您想要许多列的独特组合,您可以使用lapply
.
list_data <- lapply(df[-1], function(x) unique(cbind(df[1], x)))
如果只有两列并且我们需要使用dplyr
,我们可以使用distinct
.
Product <- df %>% distinct(ID, product)
YEAR <- df %>% distinct(ID, year)
推荐阅读
- php - 如果 MySql 字段为空白/空/无,如何禁用标题
- typescript - 反应原生,输入的表单值作为 null 从反应原生 Fetch 方法传递
- python - gem5中Python和C++之间如何传递System对象的clk_domain等属性?
- python - 创建内部类的实例
- sql - SQL Server - 将时间向上/向下舍入到 30 分钟间隔
- c# - C# 中的 OutOfMemory 异常
- javascript - 用 JS 去除引号以转换为 JSON 对象
- python - python在所有大写单词上拆分字符串
- python - 我试图在后台添加一个倒数计时器,以便在时间用完时终止程序
- api - 不可预测的 soundcloud api 曲目列表