从数据框中删除最后一个非 NA 值
Remove Last Non-NA Value from Dataframe
我有一个如下所示的数据框:
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
我们可以使用 max.col
找到每行的最后一个非 NA 元素,然后使用 row/column 索引,将这些元素设置为原始数据集中的 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>
我有一个如下所示的数据框:
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
我们可以使用 max.col
找到每行的最后一个非 NA 元素,然后使用 row/column 索引,将这些元素设置为原始数据集中的 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>