我有一个如下所示的数据框:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
10 A B C NA NA NA
12 B P V G NA NA
14 C I K H M H
55 N K NA NA NA NA
34 M N O P Q NA
如何删除每行中的最后一个非NA值并替换为NA?
最终输出:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
10 A B NA NA NA NA
12 B P V NA NA NA
14 C I K H M NA
55 N NA NA NA NA NA
34 M N O P NA NA
答案 0 :(得分:3)
我们可以使用max.col
找到每行的最后一个非NA元素,然后使用行/列索引,在原始数据集中将这些元素设置为NA
df1[cbind(1:nrow(df1), max.col(!is.na(df1), 'last'))] <- NA
df1
# Col1 Col2 Col3 Col4 Col5 Col6 Col7
#1 10 A B <NA> <NA> <NA> <NA>
#2 12 B P V <NA> <NA> <NA>
#3 14 C I K H M <NA>
#4 55 N <NA> <NA> <NA> <NA> <NA>
#5 34 M N O P <NA> <NA>