使用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
任何帮助,非常感谢。
答案 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>