Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于行名称折叠,但列出所有折叠的值_R_Collapse - Fatal编程技术网

R 基于行名称折叠,但列出所有折叠的值

R 基于行名称折叠,但列出所有折叠的值,r,collapse,R,Collapse,我有一个数据框,我想根据行名称折叠它,列出列中的所有值(见下文): 我想生成以下输出: name value nameA 10,3,5 nameB 5 nameC 1,44 我可以使用aggregate()进行此操作吗?类似地,我用R求和 sum您的预期输出实际上并不是对任何值求和。相反,您是在连接它们。您可以在aggregate调用中使用c函数 aggregate(value ~ name, dat, c) # name value # 1 nameA 10,

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

我想生成以下输出:

 name   value
 nameA  10,3,5
 nameB  5
 nameC  1,44
我可以使用aggregate()进行此操作吗?类似地,我用R求和


sum您的预期输出实际上并不是对任何值求和。相反,您是在连接它们。您可以在
aggregate
调用中使用
c
函数

aggregate(value ~ name, dat, c)
#    name    value
# 1 nameA 10, 3, 5
# 2 nameB        5
# 3 nameC    1, 44
其中
dat
是您的数据

您还可以使用
粘贴
,或
toString
(基本上是
粘贴(…,collapse=“,”

或者,您可以使用
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
你可以试试

aggregate(value~name, df, I)
#  name    value
#1 nameA 10, 3, 5
#2 nameB        5
#3 nameC    1, 44
或使用
data.table

library(data.table)
setDT(df)[, list(value=list(value)), by=name]
aggregate(value~name, df, I)
#  name    value
#1 nameA 10, 3, 5
#2 nameB        5
#3 nameC    1, 44
library(data.table)
setDT(df)[, list(value=list(value)), by=name]