基于标识符对行进行分组而不聚合数据

时间:2017-02-24 16:43:24

标签: r

使用R,我希望在同一数据集中为每个公共标识符组合行(最多2个)。

我的数据集有ID,日期和文本字段。

df1 <- data.frame(ID = c("1", "1", "2", "3", "3"),
          Date = c("2017-02-12", "2017-03-12", "2017-02-14", "2016-02-12", "2014-02-12"),
          Text = c("Pie", "Cake", "Pie", "IceCream", "Chocolate"))

我想基于标识符组合行而不进行聚合,最终结果会使我的列数增加一倍。

导致:

ID|Date.a     | Text.a  | Date.b     |Text.b  
1 |2017-02-12 | Pie     | 2017-03-12 | Cake  
2 |2017-02-14 | Pie     |            |  
3 |2017-02-14 | IceCream| 2017-02-12 |Chocolate  

任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:1)

好像你希望你的数据变得更加混乱。 Tidy Data是如何通常格式化数据以执行有效分析的非常好的资源。

以下是一个转换示例,您可以按照我认为您正在寻找的方式查看数据,同时看起来比您请求的输出更清晰。

library(tidyverse)
df1 <- data.frame(ID = c("1", "1", "2", "3", "3"),
              Date = c("2017-02-12", "2017-03-12", "2017-02-14", "2016-02-12", "2014-02-12"),
              Text = c("Pie", "Cake", "Pie", "IceCream", "Chocolate"))

df2 <- spread(df1, key = Text, value = Date)

> df2
  ID       Cake  Chocolate   IceCream        Pie
1  1 2017-03-12       <NA>       <NA> 2017-02-12
2  2       <NA>       <NA>       <NA> 2017-02-14
3  3       <NA> 2014-02-12 2016-02-12       <NA>