我有一个数据框,我想根据行名折叠它,在一列中列出所有值(见下文):
name value
nameA 10
nameA 3
nameA 5
nameB 5
nameC 1
nameC 44
我想生成这个输出:
name value
nameA 10,3,5
nameB 5
nameC 1,44
我可以为此使用 aggregate() 吗?我以类似的方式对 R 中的值求和?
sum <-aggregate(cbind(value) ~ name, data = x , FUN = sum )
谢谢!
最佳答案
您的预期输出实际上并未对任何值求和。相反,您正在连接它们。您可以在 aggregate
调用中使用 c
函数。
aggregate(value ~ name, dat, c)
# name value
# 1 nameA 10, 3, 5
# 2 nameB 5
# 3 nameC 1, 44
dat
是您的数据。
您还可以使用 paste
或 toString
(基本上是 paste(..., collapse = ", "
)。
aggregate(value ~ name, dat, toString)
# name value
# 1 nameA 10, 3, 5
# 2 nameB 5
# 3 nameC 1, 44
aggregate(value ~ name, dat, paste, collapse = ",")
# name value
# 1 nameA 10,3,5
# 2 nameB 5
# 3 nameC 1,44
或者,您可以使用 dplyr
library(dplyr)
group_by(dat, name) %>% summarize(value = toString(value))
# name value
# 1 nameA 10, 3, 5
# 2 nameB 5
# 3 nameC 1, 44
关于r - 根据行名折叠,但列出所有折叠的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26977626/