【问题标题】:How to use Coalesce function on a dataframe [duplicate]如何在数据帧上使用 Coalesce 函数 [重复]
【发布时间】:2023-04-10 04:48:01
【问题描述】:

我试图找到一种方法来处理 NA 数据但无法这样做,请协助我。

我有以下数据,

R1 <- c("15515","5156","65656","1566", "2857","8888","65656","1566","65651")
R2 <- c("515","5156.11-","415-","1455-","886","888","777","666","4457")
RC1 <- c("AW","FG","ZA","ZI","","CW","","","")
RC2 <- c("SSSBB","","","ZXXQA","","CQAER","","KKHDY","TTQWW")
RC3 <- c("KKAJDJHW","XVVJAKWA","","","","CDDGAJJA","GGGAJTTD","","BBNMNJJI")
df <- data.frame(R1,R2,RC1,RC2,RC3)

我正在使用下面的代码来解决 RC1、RC2 和 RC3 中的 NA

df_1$RCC <- with(df_1, coalesce(df_1$RC3,df_1$RC2,df_1$RC1))
df_1

我无法从 RC1 和 RC2 获取数据。需要您的帮助。

【问题讨论】:

    标签: r coalesce


    【解决方案1】:

    要使coalesce 工作,您需要NA 而不是空白。将空格更改为NA 并尝试:

    library(dplyr)
    
    df[df == ''] <- NA
    df %>% mutate(RCC = coalesce(RC3, RC2, RC1))
    
    #    R1       R2  RC1   RC2      RC3      RCC
    #1 15515      515   AW SSSBB KKAJDJHW KKAJDJHW
    #2  5156 5156.11-   FG  <NA> XVVJAKWA XVVJAKWA
    #3 65656     415-   ZA  <NA>     <NA>       ZA
    #4  1566    1455-   ZI ZXXQA     <NA>    ZXXQA
    #5  2857      886 <NA>  <NA>     <NA>     <NA>
    #6  8888      888   CW CQAER CDDGAJJA CDDGAJJA
    #7 65656      777 <NA>  <NA> GGGAJTTD GGGAJTTD
    #8  1566      666 <NA> KKHDY     <NA>    KKHDY
    #9 65651     4457 <NA> TTQWW BBNMNJJI BBNMNJJI
    

    【讨论】:

    • 谢谢,可惜我无法实现,一定是因为我的系统是R版本。是否有其他可能的解决方案。
    • 有什么问题?它会给您不正确的结果或给出错误消息吗?我假设您正在分配数据以进行更改以反映。df &lt;- df %&gt;% mutate(RCC = coalesce(RC3, RC2, RC1))
    • 我分配回 df,当我查看(df)时,它与我在问题陈述中粘贴为图像的那个相同。只有 RC3 值在反映。
    • 您使用的是帖子中显示的相同数据吗?
    • R 版本的问题,可能还有dplyr。我的packageVersion('dplyr') #[1] ‘1.0.1’。你的是什么?试试df &lt;- data.frame(R1,R2,RC1,RC2,RC3, stringsAsFactors = FALSE)
    【解决方案2】:

    我们也可以这样做,而不必键入所有列名

    library(dplyr)# >= 1.0.0    
    df %>% 
        mutate(across(everything(), na_if, "")) %>%
        mutate(RCC = coalesce(!!! select(., RC3:RC1)))
    #    R1       R2  RC1   RC2      RC3      RCC
    #1 15515      515   AW SSSBB KKAJDJHW KKAJDJHW
    #2  5156 5156.11-   FG  <NA> XVVJAKWA XVVJAKWA
    #3 65656     415-   ZA  <NA>     <NA>       ZA
    #4  1566    1455-   ZI ZXXQA     <NA>    ZXXQA
    #5  2857      886 <NA>  <NA>     <NA>     <NA>
    #6  8888      888   CW CQAER CDDGAJJA CDDGAJJA
    #7 65656      777 <NA>  <NA> GGGAJTTD GGGAJTTD
    #8  1566      666 <NA> KKHDY     <NA>    KKHDY
    #9 65651     4457 <NA> TTQWW BBNMNJJI BBNMNJJI
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2014-04-23
      • 2021-09-01
      相关资源
      最近更新 更多