【发布时间】:2018-12-31 12:08:53
【问题描述】:
我想在每个组 (grp) 之后插入一个新行,并用下一行的值和前一行的值填充一些新列
我正在尝试使用:
x<-rbind(setDT(DF), DF[,.SD[.N], grp][, color := shift(color,1L, type = "lag")][, Lat:= shift(Lat,1L, type = "lead")])[order(id)]
在 DF 上:
a <- c(1,2,3,4,5,6,7,8,9,10)
b <- c(10,20,30,40,50,60,70,80,90,100)
c <- c("a","a","b","b","b","a","a","b","c","c")
d <- c(11,23,67,89,90,100,101,123,200,290)
df <- data.frame(color=a, Lat=b, grp=c, id=d)
我可能使用了不正确的 shift(),我似乎无法让它工作。
谢谢
预期结果是:
color Lat grp id
1 1 10 a 11
2 2 20 a 23
new row with color from previous row, Lat from next row, grp from previous and if from next
3 3 30 b 67
4 4 40 b 89
5 5 50 b 90
new row as before
6 6 60 a 100
7 7 70 a 101
new row as before
8 8 80 b 123
new row as before
9 9 90 c 200
10 10 100 c 290
【问题讨论】:
-
你能显示预期的输出吗?当前代码有什么问题
-
修改了预期的结果。
-
完美!正是我想要的。不认为我理解代码虽然