如何用R将列中相同值的行值分组? [复制]

Posted

技术标签:

【中文标题】如何用R将列中相同值的行值分组? [复制]【英文标题】:How to group in a row values of the same value in a column with R? [duplicate] 【发布时间】:2016-09-28 06:14:24 【问题描述】:

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

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

这样的:

A   12,14,13
B   20,15

你知道怎么做吗?

提前致谢!

【问题讨论】:

试试aggregate(Value~Type, df1, FUN= toString) 【参考方案1】:

使用base最简单:

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

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

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

然而....

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

工作正常。

【讨论】:

这可行,但我无法将结果写入 CSV 文档。它可以写成“类似csv”的文档还是纯文本?当我尝试编写 csv 时,我收到此消息:“Error inn .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol, : not implemented type 'list' in 'EncodeElement'跨度> 【参考方案2】:

我们可以使用来自base Raggregate

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

【讨论】:

【参考方案3】:

使用data.table 的另一种选择:

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

library(data.table)

setDT(df)

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

【讨论】:

【参考方案4】:

您可以使用tidyr 库。

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

【讨论】:

以上是关于如何用R将列中相同值的行值分组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:使用 apply 将特定列中的行值复制到新列中

将列中具有相同值的行合并在一起

如何用R从数据框中的各个列中找出最小值? [复制]

如何计算与 R 中相同列值关联的两个行值的差异?

清理 R 数据框,以便在列中没有行值大于下一行值的 2 倍

如何获取具有相同ID的行的分组信息的列? [复制]