如何在 data.table 对象的每一列中找到最后一个非缺失值?
要在data.table对象的每一列中找到最后一个非缺失值,我们可以使用 lapply 函数和 tail 函数来获取 NA 值。
例如,如果我们有一个data.table名为 DT的对象,那么我们可以使用以下给定的命令在 DT 的每一列中找到最后一个非缺失值 -
DT[,lapply(.SD,function(x) tail(x[!is.na(x)],1))]
示例 1
以下代码段创建了一个data.table对象 -
library(data.table)x1<-sample(c(NA,1,2),20,replace=TRUE)
x2<-sample(c(NA,5,10),20,replace=TRUE)
x3<-sample(c(NA,100,200),20,replace=TRUE)
DT1<-data.table(x1,x2,x3)
DT1
data.table创建以下对象 -
x1 x2 x31: 2 5 200
2: NA 5 200
3: 1 5 100
4: NA NA 100
5: 1 10 200
6: NA 10 100
7: NA NA 200
8: 2 10 100
9: 1 10 100
10: 1 5 200
11: 1 5 NA
12: NA 5 NA
13: 2 5 100
14: NA 5 100
15: NA 10 100
16: 2 5 200
17: NA 5 NA
18: NA NA NA
19: 2 10 200
20: 1 NA 100
要在 DT1 的每一列中找到最后一个非缺失值,请将以下代码添加到上述代码段中 -
DT1[,lapply(.SD,function(x) tail(x[!is.na(x)],1))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
x1 x2 x31: 1 10 100
示例 2
以下代码段创建了一个data.table对象 -
y1<-sample(c(NA,rnorm(2)),20,replace=TRUE)y2<-sample(c(NA,rnorm(2)),20,replace=TRUE)
y3<-sample(c(NA,rnorm(2)),20,replace=TRUE)
DT2<-data.table(y1,y2,y3)
DT2
data.table创建以下对象 -
y1 y2 y31: -0.7819176 0.5451545 -1.7242281
2: -0.4305358 NA NA
3: -0.7819176 0.5451545 NA
4: -0.4305358 NA 0.3926004
5: NA 0.2671401 -1.7242281
6: -0.7819176 0.2671401 0.3926004
7: -0.7819176 NA NA
8: -0.4305358 0.5451545 -1.7242281
9: -0.4305358 NA -1.7242281
10: -0.7819176 0.5451545 NA
11: -0.4305358 NA NA
12: NA 0.5451545 0.3926004
13: -0.4305358 NA 0.3926004
14: -0.4305358 0.5451545 -1.7242281
15: NA 0.2671401 0.3926004
16: NA 0.5451545 -1.7242281
17: NA NA NA
18: -0.4305358 NA NA
19: -0.7819176 0.2671401 NA
20: -0.7819176 NA -1.7242281
要在 DT2 的每一列中找到最后一个非缺失值,请将以下代码添加到上述代码段中 -
DT2[,lapply(.SD,function(x) tail(x[!is.na(x)],1))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
y1 y2 y31: -0.7819176 0.2671401 -1.724228
示例 3
以下代码段创建了一个data.table对象 -
z1<-sample(c(NA,round(runif(2,2,10),2)),20,replace=TRUE)z2<-sample(c(NA,round(runif(2,1,2),2)),20,replace=TRUE)
z3<-sample(c(NA,round(runif(2,10,115),2)),20,replace=TRUE)
DT3<-data.table(z1,z2,z3)
DT3
data.table创建以下对象 -
z1 z2 z31: 8.94 NA 71.40
2: NA NA NA
3: 8.94 NA NA
4: 8.94 NA 71.40
5: 4.09 1.48 NA
6: 4.09 NA NA
7: NA 1.38 71.40
8: 8.94 NA NA
9: 4.09 NA NA
10: 8.94 NA NA
11: 4.09 NA 71.40
12: 8.94 1.48 107.44
13: 8.94 1.38 NA
14: 4.09 1.38 NA
15: 8.94 1.38 107.44
16: NA 1.48 71.40
17: NA NA 107.44
18: NA 1.38 71.40
19: 4.09 NA NA
20: 4.09 1.48 71.40
要在 DT3 的每一列中找到最后一个非缺失值,请将以下代码添加到上述代码段中 -
DT3[,lapply(.SD,function(x) tail(x[!is.na(x)],1))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
z1 z2 z31: 4.09 1.48 71.4
以上是 如何在 data.table 对象的每一列中找到最后一个非缺失值? 的全部内容, 来源链接: utcz.com/z/322641.html