oracle 向前滚和向后滚,滚动连接:向前和向后滚动

博客探讨了在使用data.table进行滚动连接时遇到的NA值问题。作者展示了如何使用data.table的roll=TRUE选项进行组内滚动连接,但发现结果中存在NA值。虽然可以使用zoo包的na.locf函数填充,但寻求更优雅的解决方案,希望能在滚动连接前处理NA值,避免后期填充。
摘要由CSDN通过智能技术生成

data.table是真棒,因为我可以做滚动连接,甚至在组内滚动加入!

library(data.table)

set.seed(42)

metrics

ID=c(rep(1, 10), rep(2,5), rep(3,5)),

Time=c(1:10, 4:8, 8:12),

val1=runif(20),

val2=runif(20),

val3=runif(20),

val4=runif(20)

)

metrics

calendar

metrics[calendar,roll=TRUE]

但是,对我来说这不是很棒.这个data.table还有NAs:

> metrics[calendar,roll=TRUE]

ID Time val1 val2 val3 val4

1: 1 1 0.9148060 0.9040314 0.3795592 0.675607275

2: 1 2 0.9370754 0.1387102 0.4357716 0.982817198

3: 1 3 0.9370754 0.1387102 0.4357716 0.982817198

4: 1 4 0.8304476 0.9466682 0.9735399 0.566488424

5: 1 5 0.8304476 0.9466682 0.9735399 0.566488424

6: 1 6 0.5190959 0.5142118 0.9575766 0.189473935

7: 1 7 0.7365883 0.3902035 0.8877549 0.271286615

8: 1 8 0.7365883 0.3902035 0.8877549 0.271286615

9: 1 9 0.6569923 0.4469696 0.9709666 0.693204820

10: 1 10 0.7050648 0.8360043 0.6188382 0.240544740

11: 1 11 0.7050648 0.8360043 0.6188382 0.240544740

12: 1 12 0.7050648 0.8360043 0.6188382 0.240544740

13: 2 1 NA NA NA NA

14: 2 2 NA NA NA NA

15: 2 3 NA NA NA NA

16: 2 4 0.4577418 0.7375956 0.3334272 0.042988796

17: 2 5 0.7191123 0.8110551 0.3467482 0.140479094

18: 2 6 0.9346722 0.3881083 0.3984854 0.216385415

19: 2 7 0.2554288 0.6851697 0.7846928 0.479398564

20: 2 8 0.2554288 0.6851697 0.7846928 0.479398564

21: 2 9 0.2554288 0.6851697 0.7846928 0.479398564

22: 2 10 0.2554288 0.6851697 0.7846928 0.479398564

23: 2 11 0.2554288 0.6851697 0.7846928 0.479398564

24: 2 12 0.2554288 0.6851697 0.7846928 0.479398564

25: 3 1 NA NA NA NA

26: 3 2 NA NA NA NA

27: 3 3 NA NA NA NA

28: 3 4 NA NA NA NA

29: 3 5 NA NA NA NA

30: 3 6 NA NA NA NA

31: 3 7 NA NA NA NA

32: 3 8 0.9400145 0.8329161 0.7487954 0.719355838

33: 3 9 0.9400145 0.8329161 0.7487954 0.719355838

34: 3 10 0.1174874 0.2076590 0.1712643 0.375489965

35: 3 11 0.4749971 0.9066014 0.2610880 0.514407708

36: 3 12 0.5603327 0.6117786 0.5144129 0.001570554

ID Time val1 val2 val3 val4

我可以使用动物园::: na.locf,fromLast = TRUE填充这些NA,但这不是很有趣.任何人都可以想到一种优雅的方式,我可以把NA向后推,(在滚动前),在data.table加入?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值