【问题标题】:Shift the value of the variable in R "A" instead of NA将变量的值移到 R \"A\" 而不是 NA
【发布时间】:2022-11-19 20:59:09
【问题描述】:

我需要用变量“A”的值代替变量“B”的 NA。
我的数据框示例:

> df <- data.frame(A = seq(1, 10), B = c(1, NA, 3, 4, NA, NA, 7, 8, NA, NA))
> df
    A  B
1   1  1
2   2 NA
3   3  3
4   4  4
5   5 NA
6   6 NA
7   7  7
8   8  8
9   9 NA
10 10 NA

我想将上面的数据框转换成这样:

> df
    A  B
1   1  1
2   2  2
3   3  3
4   4  4
5   5  5
6   6  6
7   7  7
8   8  8
9   9  9
10 10 10

【问题讨论】:

标签: r dataframe na


【解决方案1】:

使用 R 基础索引

> df$B[is.na(df$B)] <- df$A[is.na(df$B)]
> df
    A  B
1   1  1
2   2  2
3   3  3
4   4  4
5   5  5
6   6  6
7   7  7
8   8  8
9   9  9
10 10 10

【讨论】:

    【解决方案2】:

    使用coalesce

    library(dplyr)
    df <- df %>%
         mutate(B = coalesce(B, A))
    

    -输出

    df
     A  B
    1   1  1
    2   2  2
    3   3  3
    4   4  4
    5   5  5
    6   6  6
    7   7  7
    8   8  8
    9   9  9
    10 10 10
    

    【讨论】:

      【解决方案3】:

      我更喜欢coalesce。这是一个ifelse

      library(dplyr)
      df %>% 
        mutate(B = ifelse(is.na(B), A, B))
      
         A  B
      1   1  1
      2   2  2
      3   3  3
      4   4  4
      5   5  5
      6   6  6
      7   7  7
      8   8  8
      9   9  9
      10 10 10
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-26
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        • 2015-02-13
        • 1970-01-01
        相关资源
        最近更新 更多