rik*_*urr 5 sql r group-concat dplyr
我很难在dplyr中复制典型SQL GROUP_CONCAT函数的功能.我还想确保可以控制组内的排序.理想情况下,我想使用hadleyverse/tidyverse,但基本R或其他包也可以使用.
示例数据:
ID name
1 apple
1 orange
2 orange
3 orange
3 apple
Run Code Online (Sandbox Code Playgroud)
期望的输出:
ID name
1 apple,orange
2 orange
3 apple,orange
Run Code Online (Sandbox Code Playgroud)
请注意,对于ID = 3,排序是按字母顺序排列的,而不是排序的排序方式.我认为这可以通过先做一个来处理arrange,但是在summarise语句等内部进行控制会很好.
在R,我们可以使用其中一个操作组.
library(dplyr)
df1 %>%
group_by(ID) %>%
summarise(name = toString(sort(unique(name))))
# ID name
# <int> <chr>
#1 1 apple, orange
#2 2 orange
#3 3 apple, orange
Run Code Online (Sandbox Code Playgroud)
或使用 data.table
library(data.table)
setDT(df1)[, .(name = toString(sort(unique(name)))), by = ID]
# ID name
#1: 1 apple, orange
#2: 2 orange
#3: 3 apple, orange
Run Code Online (Sandbox Code Playgroud)