【发布时间】:2018-04-25 22:33:45
【问题描述】:
我一直在认真思考这个问题,可以归结为:
我有以下两个向量(实际上是两个不同数据框中的列):
TIME <- 2000+1:3
ID <- c("A", "B")
我想要这个输出
ID2 <- c("A", "A", "A", "B", "B", "B")
TIME2 <- c(2000+1:3, 2000+1:3)
data.frame(ID2, TIME2)
组合数据集的常用方法(我通常使用 dplyr)假设两个数据集之间存在共享值,或者组合为单独的行,似乎不符合目的。 我还研究了从 for 循环中创建它。 (将 ID2 中每个唯一值和时间的一行附加到一个新的数据框中,但我无法弄清楚,在我看来,我陷入了错误的思考方式。
我想一种方法可能是将每个唯一 ID (length(TIME)) 重复到一个向量中,并将其与重复 TIME (length(unique(ID)) 的向量 cbind。
或者你有一个优雅的解决方案?
【问题讨论】:
-
expand.grid(TIME, ID) -
tidyr::crossing(TIME,ID)一个整洁的解决方案。 -
为了完整起见,
data.table::CJ(ID, TIME)
标签: r