r重链ifelse

cld4siwp  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(124)

我很抱歉,如果这是一个重复的问题。基本上我有一个数据集,让我们说4列。每一个都有缺失的数据,他们是MAR。

col1    col2    col3    col4
7       4       3       7
        0               4
7      10       4   
5               8       7
1       9               7
8      10       5   
        1       4       5
3           
7      10       7       5
2       2       4   
        7               2
9               2   
6       0       9       9
        3       9   
6                       5
0       7       6

我的目标是创建一列Col5
步骤1)检查是否缺少Col1,如果没有,则使用Col1中的值更新Col5
步骤2)检查列1是否缺失,如果列1缺失,则检查列2,如果列1缺失且列2未缺失,则使用列2的值更新列5的值
步骤3)如果缺少第1列和第3列,而第3列未缺少,则使用第3列中的值更新第5列
步骤4)如果缺少第1列、第2列和第3列,而第4列未缺少,则使用第4列中的值更新第5列。
步骤5)如果所有4列均缺失,则第5列为NA。
预期的最终数据集

col1    col2    col3    col4   col5
7       4       3       7      7
        0               4      0
7      10       4              7
5               8       7      5 
1       9               7      1
8      10       5              8
        1       4       5      1
3                              3
7      10       7       5      7
2       2       4              2
        7               2      7
9               2              9
                4       9      4
                        9      9        
6                       5      6
0       7       6              0

我可以使用3个不同的ifelse语句来完成这个任务,如果有人有一个有效的方法来完成这个任务,那会很有帮助。谢谢

l2osamch

l2osamch1#

我们可以使用dplyr包中的coalesce()函数:

library(dplyr)

df$col5 <- coalesce(df$col1, df$col2, df$col3, df$col4)

以上假设“缺失”值为NA

相关问题