【发布时间】:2020-06-20 21:22:55
【问题描述】:
我有一个数据框 df:
a b
A 1
A 2
A 5
B 5
B 4
C 6
我想按第一列分组并将第二列作为行中的列表:
a b
A [1,2,5]
B [5,4]
C [6]
是否可以在 R 中使用 groupby 做到这一点?
【问题讨论】:
我有一个数据框 df:
a b
A 1
A 2
A 5
B 5
B 4
C 6
我想按第一列分组并将第二列作为行中的列表:
a b
A [1,2,5]
B [5,4]
C [6]
是否可以在 R 中使用 groupby 做到这一点?
【问题讨论】:
如果我们想创建一个list 列,请在aggregate 中的base R 中按“a”分组后使用I
aggregate(b ~ a, df, FUN = I)
如果是字符串,则paste'b'的元素
aggregate(b ~ a, df, FUN = toString)
如果需要以特定格式为pasted,即[1, 2, 5]
aggregate(b ~ a, FUN = function(x) sprintf("[%s]", toString(x)))
有了dplyr,我们可以做到
library(dplyr)
df %>%
group_by(a) %>%
summarise(b = list(b))
【讨论】:
你也可以使用paste0:
aggregate(b ~ a, df, function(x) paste0("[", paste(x, collapse = ","),"]", collapse = ""))
a b
1 A [1,2,5]
2 B [5,4]
3 C [6]
【讨论】: