R 数据表中按组的非等自联接
假设我有数据:R 数据表中按组的非等自联接,r,join,data.table,self-join,R,Join,Data.table,Self Join,假设我有数据: dat = data.table(A=c(1,2,3,1,4,5,1,2,3),B=c(1,1,1,NA,1,NA,2,NA,2), C=c(1,12,24.2,251,2,1,2,3,-1),D=c(1,1,1,1,1,2,2,2,2)) 这看起来像: > dat A B C D 1: 1 1 1.0 1 2: 2 1 12.0 1 3: 3 1 24.2 1 4: 1 NA 251.0 1 5: 4 1
dat = data.table(A=c(1,2,3,1,4,5,1,2,3),B=c(1,1,1,NA,1,NA,2,NA,2),
C=c(1,12,24.2,251,2,1,2,3,-1),D=c(1,1,1,1,1,2,2,2,2))
这看起来像:
> dat
A B C D
1: 1 1 1.0 1
2: 2 1 12.0 1
3: 3 1 24.2 1
4: 1 NA 251.0 1
5: 4 1 2.0 1
6: 5 NA 1.0 2
7: 1 2 2.0 2
8: 2 NA 3.0 2
9: 3 2 -1.0 2
我想要期望的输出,通过D组,跟踪B中出现的任何元素的A的累积和。所以输出应该是:
> dat
A B C D cumsum
1: 1 1 1.0 1 1
2: 2 1 12.0 1 1
3: 3 1 24.2 1 1
4: 1 NA 251.0 1 NA
5: 4 1 2.0 1 252
6: 5 NA 1.0 2 NA
7: 1 2 2.0 2 0
8: 2 NA 3.0 2 NA
9: 3 2 -1.0 2 3
我最初的尝试是使用样式解决方案,但使用了groupby(我喜欢它,因为我认为它非常有效,并且应该扩展到大量组):
但是,这产生了一个不正确的结果:
> dat
A B C D rn cs cumsum
1: 1 1 1.0 1 1 1.0 1
2: 2 1 12.0 1 2 12.0 NA
3: 3 1 24.2 1 3 24.2 NA
4: 1 NA 251.0 1 4 252.0 0
5: 4 1 2.0 2 1 2.0 1
6: 5 NA 1.0 2 2 1.0 0
7: 1 2 2.0 2 3 2.0 NA
8: 2 NA 3.0 2 4 3.0 0
9: 3 2 -1.0 2 5 -1.0 NA
有人能告诉我哪里出错了吗
on=(A=B,rn,D)
——滚动总是在on=
中的最后一列,所以也许你是想让rn
最后一列?我想是这样的,不知道滚动是怎么回事,在数据表文档中倾泻而过,只是错过了这个,谢谢你on=(A=B,rn,D)
--滚动总是在on=
中的最后一列,所以也许你想让rn
在最后一列?我想是这样的,我不知道滚动,在数据表文档上倾泻,只是错过了这个,谢谢
> dat
A B C D rn cs cumsum
1: 1 1 1.0 1 1 1.0 1
2: 2 1 12.0 1 2 12.0 NA
3: 3 1 24.2 1 3 24.2 NA
4: 1 NA 251.0 1 4 252.0 0
5: 4 1 2.0 2 1 2.0 1
6: 5 NA 1.0 2 2 1.0 0
7: 1 2 2.0 2 3 2.0 NA
8: 2 NA 3.0 2 4 3.0 0
9: 3 2 -1.0 2 5 -1.0 NA