填写R的缺失值

时间:2018-01-31 20:19:35

标签: r

我想要R编程的帮助来填充col4 col4 = col1,如果col1为NA,则col4 = col2,如果col1和col2为NA,则col4 = col3

id col1 col2 col3
1   10   NA   NA
2   NA   12   NA
3   NA   NA   13
4   NA   NA   1
5   2    3    NA

答案:

id col4
1  10
2  12
3  13
4  1
5  2

2 个答案:

答案 0 :(得分:1)

使用coalesce中的dplyr轻松完成。此解决方案适用于N列:

library(dplyr)
data %>%
  mutate(col4 = coalesce(!!!data[-1]))

<强>结果:

  id col1 col2 col3 col4
1  1   10   NA   NA   10
2  2   NA   12   NA   12
3  3   NA   NA   13   13
4  4   NA   NA    1    1
5  5    2    3   NA    2

数据:

data = read.table(text = "id col1 col2 col3
                1 10 NA NA 
                2 NA 12 NA 
                3 NA NA 13
                4 NA NA 1 
                5 2 3 NA", header = T)

备注:

!!!不应与否定运算符!混淆(可理解的混淆)。它是rlangtidyverse(也可用于dplyr)的一部分的运算符,它启用显式拼接

这意味着,我将coalesce(或列表的元素element作为coalesce(data[-1])的输入。所以这个:

data[-1]

实际上相当于:

coalesce

以这种方式编写它的好处是,您不必知道列名,也不必知道要开始的列数。

答案 1 :(得分:0)

使用Outlook.ApplicationHow to implement coalesce in R?上的任何答案:

ThisOutlookSession