【发布时间】:2017-07-17 09:13:22
【问题描述】:
在尝试回答 this question on Stack Overflow 时,我遇到了自己的单独问题,我自己无法解决。但是,我真的很想为我的问题找到一个有效的解决方案。我最初将其发布为该问题的答案,但由于它引起了混乱,我认为单独发布此问题是一个更好的决定:
假设我有以下数据:
set.seed(1)
dat <- data.table(value = seq(1,7),value2 = seq(1,7))
shift_id = c(1,2,3,NA,4,NA,5)
我想使用 shift_id 将行移到两个新列中,因此所需的输出是:
value value2 value1.shift value2.shift
1: 1 1 1 1
2: 2 2 2 2
3: 3 3 3 3
4: 4 4 NA NA
5: 5 5 4 4
6: 6 6 NA NA
7: 7 7 5 5
请注意,第 7 行包含第 5 行的内容,因为 shift_id[7]=5 我如何使用 DT 包有效地做到这一点?
非常感谢任何帮助!
【问题讨论】:
-
这基本上是一个基本的 R 特征,即通过它的位置对向量进行子集化。看起来不像 data.table 相关的。
-
确实如此,我只是想知道如何使用 DT 包做到这一点。感谢您对答案的反馈!
标签: r data.table