我有一个在时间点0到2测量的变量var
的矩阵。像这样:
df <- data.frame(id= letters[1:5],
var0= c(1:3, NA, 5),
var1= c(11, NA, NA, 14:15),
var2= c(NA, NA, NA, NA, 25))
df
id var0 var1 var2
1 a 1 11 NA
2 b 2 NA NA
3 c 3 NA NA
4 d NA 14 NA
5 e 5 15 25
字符串
对于每一行,也就是每个人,我想保留最新的非缺失值。所以期望的输出是:
id var0 var1 var2 last_val
1 a 1 11 NA 11
2 b 2 NA NA 2
3 c 3 NA NA 3
4 d NA 14 NA 14
5 e 5 15 25 25
型
如何在tidyverse软件包中做到这一点?
5条答案
按热度按时间8gsdolmq1#
你可以使用
coalesce
。技巧是颠倒coalesce
中变量的顺序,使其返回真实的数据中最后一个非NA值:字符串
如果你想使用
tidy
selection,你可以先定义一个coacross
函数,然后再定义rev
。更多关于across
和coalesce
here的用法。型
wwwo4jvm2#
一种R碱基替代品:
字符串
p5cysglq3#
使用
max.col
进行矢量化:字符串
4ioopgfo4#
下面是一个单行的documentr解决方案:
字符串
测试结果:
型
由于我们几乎与@Maël同时给出了我们的第一个解决方案,这里有另一个选择:
型
0x6upsns5#
left_join
+pivot_longer
的技巧字符串
给
型