r - 获取 data.table 中每列最后一个非 NA 行的值

标签 r data.table

我有一个 datatable其中每一列代表一个时间序列,我想以列排序的方式获取每个时间序列的最后一个 NA 值。在我的特定用例中,我的数据如下所示:

a   b     c
1   2     5
1   -17   9
NA  11    4
NA  57    NA
63  NA    NA

因此,我想从中提取:
a   b    c
63  57   4

我怎样才能做到这一点?到目前为止,我只看到解决每行而不是每列提取最后一个非 NA 的相反情况的答案。

最佳答案

如果数据集是 data.table ,循环遍历 Data.table 的子集 ( .SD ),对非 NA 元素 ( x[!is.na(x)] ) 进行子集化并提取具有 tail 的元素中的最后一个元素.

df1[, lapply(.SD, function(x) tail(x[!is.na(x)],1))]
#   a  b c
#1: 63 57 4

关于r - 获取 data.table 中每列最后一个非 NA 行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39934159/

相关文章:

r - 如何修改R格式不正确的txt文件?

html - 在 R 中抓取具有多个选项卡的网页

使用 'by' 和条件替换 data.table 中的行值

R data.table 在所有行上应用具有多列输入的函数并获得合理的输出

r - 查找条件语句的最小值,其中条件也满足之后的所有值

重新编码 '[.data.table'

r - 如何使长文本适合 Ggplot2 分面标题

r - 从 R 中的 map_*() 构建线性回归模型

r - ggplot2密度绘制R中不同大小的数据

r - 运算符 == 在 data.table 中的逻辑列中不一致