我有以下data.table:
AssetNumber StartDate ActionNumber PerviousActionNumber
1 20090602 1
1 20090626 3
1 20090721 5
1 20091008 1
2 20090604 3
2 20090628 2
2 20090723 1
2 20091010 2
2 20091018 3
使用以下内容加载数据集:
set <- structure(list(AssetNumber = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L),
StartDate = c(20090602L, 20090626L, 20090721L, 20091008L,
20090604L, 20090628L, 20090723L, 20091010L, 20091018L), ActionNumber = c(1L,
3L, 5L, 1L, 3L, 2L, 1L, 2L, 3L), PerviousAction. = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("AssetNumber", "StartDate",
"ActionNumber", "PerviousActionNumber"), class = "data.frame", row.names = c(NA,
-9L))
我想在“PreviousActionNumber”列中添加前一条记录中的“ActionNumber”。有没有人可以告诉我用什么功能来完成这个?我希望得到以下结果:
AssetNumber StartDate ActionNumber PerviousActionNumber
1 20090602 1
1 20090626 3 1
1 20090721 5 3
1 20091008 1 5
2 20090604 3 1
2 20090628 2 3
2 20090723 1 2
2 20091010 2 1
2 20091018 3 2
更一般地说,R中是否有一个包含这样的记录间功能的特定包?
答案 0 :(得分:4)
您正在使用:=
通过引用查找作业。这是非常基本的。我建议你阅读data.table
手册/文档。
# thanks to @agstudy
dt[, previousActionNumber := c(NA, head(ActionNumber, -1))]