【问题标题】:How to fill NA in column with value in next column? [duplicate]如何用下一列中的值填充列中的 NA? [复制]
【发布时间】:2020-11-10 03:17:57
【问题描述】:

我有一个数据框:

Type   value1                                           value2            
1    Error: unexpected                                seq warn
2    Warning message                                  excepted action 
3    NA                                               produce values
4    In `[<-.factor`(`*tmp*`, iseq, value = "v1")     values produced 
5    NA                                               rewriting data

我想用 value2 列中的值填充 value1 列中的 NA。我怎么能写那个条件?期望的结果是:

Type   value1                                           value2            
1    Error: unexpected                                seq warn
2    Warning message                                  excepted action 
3    produce values                                   produce values
4    In `[<-.factor`(`*tmp*`, iseq, value = "v1")     values produced 
5    rewriting data                                   rewriting data

【问题讨论】:

  • 找到 NA 的行,然后从其他列赋值:df1[ is.na(df1$value1), "value1"] &lt;- df1[ is.na(df1$value1), "value2"]

标签: r dataframe


【解决方案1】:

您可以使用coalesce

library(dplyr)
df %>%  mutate(value1 = coalesce(value1, value2))

或者在基础 R 中:

transform(df, value1 = ifelse(is.na(value1), value2, value2))

【讨论】:

    【解决方案2】:

    我们可以从data.table使用fcoalesce

    library(data.table)
    setDT(df)[, value1 := fcoalesce(value1, value2)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      相关资源
      最近更新 更多