根据行名折叠,但列出所有折叠值 [英] Collapse based on row names, but list all collapsed values

查看:67
本文介绍了根据行名折叠,但列出所有折叠值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a data frame which I'd like to collapse based on row names, list all the values in a column (see below):

 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中的值求和?

Can I use aggregate() for this? similar way I sum the values in R?


sum< -aggregate(cbind(value)〜名称,data = x,FUN = sum)

sum <-aggregate(cbind(value) ~ name, data = x , FUN = sum )

谢谢!

推荐答案

您的预期输出实际上未对任何值求和。而是将它们串联起来。您可以在汇总调用中使用 c 函数。

Your expected output is not actually summing any values. Rather, you are concatenating them. You can use the c function in your aggregate call.

aggregate(value ~ name, dat, c)
#    name    value
# 1 nameA 10, 3, 5
# 2 nameB        5
# 3 nameC    1, 44

其中 dat 是您的数据。

您还可以使用粘贴 toString (基本上是 paste(...,crash =, )。

You could also use paste, or toString (which is basically 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

这篇关于根据行名折叠,但列出所有折叠值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆