我尝试对数据集进行排序,但我对此有点失落。我已完成其他所有工作,数据过滤,重复值消除,按日期排序......但我坚持这一点,也许是最简单的部分之一。我的目标是转换此数据框:
Type Value
A 12
B 20
A 14
A 13
B 15
对于这样的事情:
A 12,14,13
B 20,15
关于如何做到这一点的任何想法?
提前致谢!
答案 0 :(得分:5)
使用base是最简单的:
aggregate(df$Value~df$Type,FUN=c)
df$Type df$Value
1 A 12, 14, 13
2 B 20, 15
使用FUN = c将Value类型保持为数字(实际上是数字向量),这比转换为String更好imho
但是....如果不再需要转换并且你想将上面保存为CSV - 你想要转换为String:
write.csv(x = aggregate(df$Value~df$Type,FUN=toString),file = "nameMe")
工作正常。
答案 1 :(得分:4)
我们可以使用aggregate
base R
aggregate(Value~., df1, FUN= toString)
# Type Value
#1 A 12, 14, 13
#2 B 20, 15
答案 2 :(得分:2)
使用data.table
的另一种选择:
假设:data.frame存储在变量df中。
library(data.table)
setDT(df)
df[,.(Value = paste(Value,collapse=',')),.(Type)]
答案 3 :(得分:1)
您可以使用tidyr
库。
> library(tidyr)
> spread(df, Type, Value)
A B
1 12 NA
2 NA 20
3 14 NA
4 13 NA
5 NA 15