在数据表中使用带.SD的na.locf函数(动物园软件包) [英] Use of na.locf function (zoo package) with .SD in data.table
本文介绍了在数据表中使用带.SD的na.locf函数(动物园软件包)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试填写所有NA,其中不包括前两个NA用于第1和4列,以及3个NA用于第2和3列,最新的非NA值。这里是我的数据和代码:
I am trying to fill out all NA's excluding the first two NA's for cols 1 and 4 and three NA's for cols 2 and 3 with most recent non-NA value . Here is my data and code:
hh<-structure(list(ka = c(NA, NA, 2, NA, NA, 3, NA, NA, NA, NA),
kb = c(NA, NA, NA, 2, NA, NA, 3, NA, NA, NA), gc = c(NA,
NA, NA, 3, NA, NA, 6, NA, NA, NA), hc = c(NA, NA, 8, NA,
NA, NA, 4, NA, NA, NA)), .Names = c("ka", "kb", "gc", "hc"
), row.names = c(NA, -10L), class = "data.frame")
library(zoo) #na.locf
library(data.table)
setDT(hh)[,`:=`(ka=c(NA,NA,na.locf(ka)),kb=c(NA,NA,NA,na.locf(kb)),gc=c(NA,NA,NA,na.locf(gc)),hc=c(NA,NA,na.locf(hc)))][]
ka kb gc hc
1: NA NA NA NA
2: NA NA NA NA
3: 2 NA NA 8
4: 2 2 3 8
5: 2 2 3 8
6: 3 2 3 8
7: 3 3 6 4
8: 3 3 6 4
9: 3 3 6 4
10: 3 3 6 4
$ b b
但是,我正在寻找 lapply
和 .SD
的使用,因为我有两列以上每种类型。这是可能吗?
However, I am looking for use of lapply
with .SD
as I have more than two columns for each type. Is this possible?
推荐答案
尝试
setDT(hh)[, lapply(.SD, function(x) na.locf(x, na.rm=FALSE))]
或使用设置
for(j in seq_along(hh)){
set(hh, i=NULL, j=j, value= na.locf(hh[[j]], na.rm=FALSE))
}
这篇关于在数据表中使用带.SD的na.locf函数(动物园软件包)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文