r - 根据行名折叠,但列出所有折叠的值

标签 r grouping

我有一个数据框,我想根据行名折叠它,在一列中列出所有值(见下文):

 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 是您的数据。

您还可以使用 pastetoString(基本上是 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/

相关文章:

r - 按 r 中最早的日期和 id 的条件

r - 在 lattice xyplot 中绘制每组面板数据的第一个点

r - 格子箱线图格子

javascript - 按组分组数组并按位置排序

在 R 中逐行删除重复值

r - R 中的交叉验证问题

r - 基于温度阈值向量汇总温度数据

python - 查找沿线的点密度以查找具有最大浓度的区域

python : group csv row by index

r - 将数字组合成不超过最大值向量的最佳组的算法?