我的数据有多个列,其中一些列在不同的行中有缺失值。我想通过变量“g”对数据进行分组(折叠),保留每个变量的最后一个非缺失观察。
输入:
d <- data.table(a=c(1,NA,3,4),b=c(1,2,3,4),c=c(NA,NA,'c',NA),g=c(1,1,2,2))
期望的输出
d_g <- data.table(a=c(1,4),b=c(2,4),c=c(NA,'c'),g=c(1,2))
此处首选 data.table(或 dplyr)解决方案
OBS:这与this question有关, 但那里的主要答案似乎在某些群体中引起了不必要的 NA
最佳答案
使用data.table
:
library(data.table)
d[, lapply(.SD, function(x) last(na.omit(x))), g]
# g a b c
#1: 1 1 2 <NA>
#2: 2 4 4 c
https://stackoverflow.com/questions/66560640/