大佬教程收集整理的这篇文章主要介绍了如何在data.table中添加延迟并导致每个观察结果中的更多变量排除NA?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
library(data.tablE) mydt <- data.table(id = LETTERS[1:6],x = 1:6,y = 2:3) > mydt id x y 1: A 1 2 2: B 2 3 3: C 3 2 4: D 4 3 5: E 5 2 6: F 6 3
我想用增加滞后的值替换值列,并导致每次观察(即x [-1] x x [1]).我可以使用惊人的shift()功能做这样的事情.
cols <- c('x','y') mydt[,(cols) := shift(.SD,1) + .SD + shift(.SD,1,type = 'lead'),.SDcols = cols ][] id x y 1: A NA NA 2: B 6 7 3: C 9 8 4: D 12 7 5: E 15 8 6: F NA NA
但是这会为没有超前/滞后值的行引入NA.如何修改计算以仅对这些行使用可用的两个值(如na.rm = TRUE)?这样输出就可以了
id x y 1: A 3 5 2: B 6 7 3: C 9 8 4: D 12 7 5: E 15 8 6: F 11 5
我尝试使用sum(…,na.rm = TRUE)而不是运算符,但这给出了错误:总和错误(shift(.SD,1),. SD,shift(.SD,type =“lead) “),na.rm = TRUE):
参数的’type'(列表)无效.
我也试过以下但是显然会给出其他的东西.
@H_508_21@mydt[,(cols) := lapply( .SD,function(X) sum(shift(x,x,shift(x,na.rm = TRUE) ),.SDcols = cols ][] id x y 1: A 126 90 2: b 126 90 3: C 126 90 4: D 126 90 5: E 126 90 6: F 126 90
以上是大佬教程为你收集整理的如何在data.table中添加延迟并导致每个观察结果中的更多变量排除NA?全部内容,希望文章能够帮你解决如何在data.table中添加延迟并导致每个观察结果中的更多变量排除NA?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。