r - 按组保留所有变量的最后一个非缺失观察

我的数据有多个列,其中一些列在不同的行中有缺失值。我想通过变量“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/

相关文章:

swift - Swift 5 中的 THE.self 是什么?

python - 从 Python 数据框中的整数中检索工作日名称

webpack - 为什么 Tailwind 中的清除选项不适用于 Webpack

java - FutureTask get vs run,任务永远不会完成

kotlin - 选择随机数但排除特定值

regex - 如何从日志文件中 grep 错误但过滤掉错误警报?

vue.js - Primevue Grid 和 Flex 布局无法正确呈现

html - 如何在 svg 圆圈中居中 svg 路径?

c++ - 有没有办法进行编译时检查,一个类的所有成员都在 operator== 中进行比较

go - 无法将 terraform variables.tf 文件读入可能进入程序