如何使用 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")
工作正常。
我正在尝试对数据集进行排序,对此我有点不知所措。我已经完成了其他所有事情,数据过滤,消除重复值,按日期排序......但我坚持这个,也许是最简单的部分之一。我的目标是转换此数据框:
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")
工作正常。