【问题标题】:If NA exists in column, replace with value in another column - sqldf如果列中存在 NA,则替换为另一列中的值 - sqldf
【发布时间】:2019-03-09 00:27:39
【问题描述】:

我在下面有一个数据框:

 df

 ColA    ColB    ColC
   NA      BN       6
   JH      NA       8
   NA    rewr       9
   NA      NA      10

预期输出:

 newdf

 ColA    ColB    ColC   New_Col
   NA      BN       6        BN
   JH      NA       8        JH
   NA    rewr       9      rewr
   NA      NA      10        NA

如何使用 sqldf 执行此操作?

这是我的尝试,但没有得到我想要的输出:

newdf<- sqldf("SELECT *, replace([ColA], NULL, [ColB]) [New_Col] from df")

【问题讨论】:

    标签: r sqldf


    【解决方案1】:

    使用coalesce

    library(sqldf)
    sqldf("SELECT ColA, ColB, ColC, coalesce(ColA, ColB) as New_Col from df")
    #   ColA ColB ColC New_Col
    #1 <NA>   BN    6      BN
    #2   JH <NA>    8      JH
    #3 <NA> rewr    9    rewr
    #4 <NA> <NA>   10     <NA>
    

    tidyverse

    library(dplyr)
    df %>%
       mutate(New_Col = coalesce(ColA, ColB))
    #   ColA ColB ColC New_Col
    #1 <NA>   BN    6      BN
    #2   JH <NA>    8      JH
    #3 <NA> rewr    9    rewr
    #4 <NA> <NA>   10    <NA>
    

    数据

    df <- structure(list(ColA = c(NA, "JH", NA, NA), ColB = c("BN", NA, 
     "rewr", NA), ColC = c(6L, 8L, 9L, 10L)), class = "data.frame", row.names = c(NA, 
     -4L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      相关资源
      最近更新 更多