【问题标题】:Concatenating strings / rows using dplyr, group_by & collapse or summarize, but maintain NA values [duplicate]使用 dplyr、group_by 和折叠或汇总连接字符串/行,但保持 NA 值 [重复]
【发布时间】:2021-11-16 23:00:13
【问题描述】:

当使用 dplyr、group_by 和折叠或汇总连接字符串时,NA 值将变为字符串 "NA"。如何避免?

请参阅下面的示例:

ID <- c(1,1,2,3)
string <- c(' asfdas ', 'sdf', NA, 'NA')
df <- data.frame(ID, string)

两者,

df_conca <-df%>%
 group_by(ID)%>%
 summarize(string = paste(string, collapse = "; "))%>%
 distinct_all()

df_conca <-df%>%
 group_by(ID)%>%
 dplyr::mutate(string = paste(string, collapse = "; "))%>%
 distinct_all()

结果:

     ID string               
1     1 " asfdas ; sdf"
2     2 "NA"           
3     3 "NA" 

,但我想保留 NA 的值:

     ID string             
1     1 " asfdas ; sdf"
2     2 NA           
3     3 "NA" 

理想情况下,我希望留在 dplyr 工作流程中。

【问题讨论】:

    标签: r dplyr concatenation na collapse


    【解决方案1】:

    我们可以使用stringr 包中的str_c

    library(dplyr)
    library(stringr)
    
    df %>%
      group_by(ID)%>%
      summarize(string = str_c(string, collapse = "; "))
    
    #     ID string         
    #  <dbl> <chr>          
    #1     1 " asfdas ; sdf"
    #2     2  NA            
    #3     3 "NA"           
    

    【讨论】:

    • ?str_c 的一些相关部分:“每当缺失值与另一个字符串组合时,结果总是会缺失”; “缺少输入会导致缺少输出”。 (也许值得添加到帖子中?)。干杯
    • @Henrik:当然!我扩展了问题以涵盖这种可能性参见link!寻找解决方案。
    猜你喜欢
    • 2021-11-17
    • 2021-09-28
    • 2017-03-01
    • 2019-07-15
    • 1970-01-01
    • 2022-07-21
    • 2018-02-05
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多