如何使用 R 将列中相同值的行值分组?

How to group in a row values of the same value in a column with R?

我正在尝试对数据集进行排序,对此我有点不知所措。我已经完成了其他所有事情,数据过滤,消除重复值,按日期排序......但我坚持这个,也许是最简单的部分之一。我的目标是转换此数据框:

Type    Value
A        12
B        20
A        14
A        13
B        15

像这样:

A   12,14,13
B   20,15

知道怎么做吗?

提前致谢!

我们可以使用 base R

中的 aggregate
aggregate(Value~., df1, FUN= toString)
#   Type      Value
#1    A 12, 14, 13
#2    B     20, 15

另一个使用 data.table 的替代方案:

假设:data.frame 存储在变量 df 中。

library(data.table)

setDT(df)

df[,.(Value = paste(Value,collapse=',')),.(Type)]

您可以使用 tidyr 库。

> library(tidyr)
> spread(df, Type, Value)
   A  B
1 12 NA
2 NA 20
3 14 NA
4 13 NA
5 NA 15

使用base最简单:

aggregate(df$Value~df$Type,FUN=c)

  df$Type   df$Value
1       A 12, 14, 13
2       B     20, 15

使用 FUN=c 将值类型保持为数字(实际上是一个数字向量),恕我直言,这比转换为字符串更好

但是....如果不需要更多转换并且您想将上面的内容保存为 CSV - 您确实想转换为字符串:

write.csv(x = aggregate(df$Value~df$Type,FUN=toString),file = "nameMe")

工作正常。