【发布时间】:2016-12-02 13:56:59
【问题描述】:
我在 R 中有一个数据框,格式如下:
> old.dat
id type minDate maxDat eventNum
1 001 A may june 1
2 002 B apr oct 1
3 002 C may nov 2
4 002 B july dec 3
我想根据eventNum 将行转换为列。 eventNum 的最大值为 3,所以如果某些 ID 只有 1 个 eventNum,我希望它们填充 NA。
目标:
id type1 minDate1 maxDat1 eventNum1 type2 minDate2 maxDat2 eventNum2 type3 minDate3 maxDat3 eventNum3
1 001 A may june 1 <NA> <NA> <NA> NA <NA> <NA> <NA> NA
2 002 B apr oct 1 C may nov 2 B july dec 3
这是一个引入起点的代码块。
old.dat <- data.frame(id = c("001","002","002","002"),
type = c("A","B","C","B"),
minDate = c("may","apr","may","july"),
maxDat = c("june", "oct", "nov", "dec"),
eventNum = c(1,1,2,3))
我写了一个 for 循环,但它相当慢,而且需要很长时间来翻阅我的数据集,所以任何更快的建议都会很棒。谢谢!
【问题讨论】:
-
你的目标几乎是我能想象到的最糟糕的格式......无论如何,data.table 和 reshape2/tidyr 都提供了重塑功能。试试看。
标签: r dataframe data.table dplyr