首页 > 解决方案 > 将多行记录合并为一行

问题描述

我想按如下方式操作R中的数据,有人可以帮忙吗?

前:

Record  Person  Value
1       1       100
1       2       0
1       3       200
2       1       150
2       2       220

后:

Record  Value
1       {100, 0, 200}
2       {150, 220}

理想情况下,我希望最终数据集值位于列表中(而不是字符串),以便我可以将公式应用于每个值。

提前谢谢了。

标签: r

解决方案


你可以试试下面的代码

dfout <- aggregate(Value~Record, df, toString)

或者

dfout<- aggregate(Value~Record, df,FUN = function(x) x)

这样

> dfout
  Record       Value
1      1 100, 0, 200
2      2    150, 220

数据

df <- structure(list(Record = c(1L, 1L, 1L, 2L, 2L), Person = c(1L, 
2L, 3L, 1L, 2L), Value = c(100L, 0L, 200L, 150L, 220L)), class = "data.frame", row.names = c(NA, 
-5L))

推荐阅读