【问题标题】:How to merge two columns in R?如何合并R中的两列?
【发布时间】:2021-07-19 06:19:44
【问题描述】:
newdf=data.frame(id=c(1,3,2),admission=c("2020-05-18","2020-04-30","2020-05-08"),
                 vent=c("mechanical_vent","self_vent","mechanical_vent"))

newdf$admission=as.Date(newdf$admission)


newdf1=data.frame(id=c(1,3,1,2,1,3,2,2),
                 date=c("2020-05-19","2020-05-02","2020-05-20","2020-05-09","2020-05-21","2020-05-04","2020-05-10","2020-05-11"),
                 vent=c("self_vent","mechanical_vent","mechanical_vent","mechanical_vent","self_vent","mechanical_vent","mechanical_vent","self_vent"))

newdf1$date=as.Date(newdf1$date)

newdf=newdf %>% group_by(id) %>% bind_rows(newdf,newdf1)

newdf$dates=paste(newdf$admission,newdf$date)

我想将录取和日期列合并为日期。我使用了粘贴功能,但它提供了带有 NA 值的输出。我附上了数据集的图像。您能否提出解决此问题的方法?

【问题讨论】:

  • 最终的df应该是什么样子的?
  • 请看图。我想要它,但我想从日期列中删除 NA 。
  • 去掉 NA 是什么意思?删除日期为 NA 的行?用不同的值替换 NA?
  • 您看到“日期”列中的 NA 部分了吗?所以我需要删除那些东西。

标签: r merge


【解决方案1】:

如果您想将日期从admission转移到date,其中dateNA,这将起作用:

newdf %>%
  mutate(across(c(admission, date), ~ as.character(.))) %>%
  mutate(date = ifelse(is.na(date), admission, date))

【讨论】:

    【解决方案2】:

    我们可以使用pmax:

    newdf$dates <- pmax(newdf$admission, newdf$date, na.rm = TRUE)
    

    输出:

          id admission  vent            date       dates     
       <dbl> <date>     <chr>           <date>     <date>    
     1     1 2020-05-18 mechanical_vent NA         2020-05-18
     2     3 2020-04-30 self_vent       NA         2020-04-30
     3     2 2020-05-08 mechanical_vent NA         2020-05-08
     4     1 2020-05-18 mechanical_vent NA         2020-05-18
     5     3 2020-04-30 self_vent       NA         2020-04-30
     6     2 2020-05-08 mechanical_vent NA         2020-05-08
     7     1 NA         self_vent       2020-05-19 2020-05-19
     8     3 NA         mechanical_vent 2020-05-02 2020-05-02
     9     1 NA         mechanical_vent 2020-05-20 2020-05-20
    10     2 NA         mechanical_vent 2020-05-09 2020-05-09
    11     1 NA         self_vent       2020-05-21 2020-05-21
    12     3 NA         mechanical_vent 2020-05-04 2020-05-04
    13     2 NA         mechanical_vent 2020-05-10 2020-05-10
    14     2 NA         self_vent       2020-05-11 2020-05-11
    

    【讨论】:

      【解决方案3】:

      你可以使用coalesce -

      library(dplyr)
      
      newdf %>% ungroup %>% mutate(dates = coalesce(admission, date))
      
      #      id admission  vent            date       dates     
      #   <dbl> <date>     <chr>           <date>     <date>    
      # 1     1 2020-05-18 mechanical_vent NA         2020-05-18
      # 2     3 2020-04-30 self_vent       NA         2020-04-30
      # 3     2 2020-05-08 mechanical_vent NA         2020-05-08
      # 4     1 2020-05-18 mechanical_vent NA         2020-05-18
      # 5     3 2020-04-30 self_vent       NA         2020-04-30
      # 6     2 2020-05-08 mechanical_vent NA         2020-05-08
      # 7     1 NA         self_vent       2020-05-19 2020-05-19
      # 8     3 NA         mechanical_vent 2020-05-02 2020-05-02
      # 9     1 NA         mechanical_vent 2020-05-20 2020-05-20
      #10     2 NA         mechanical_vent 2020-05-09 2020-05-09
      #11     1 NA         self_vent       2020-05-21 2020-05-21
      #12     3 NA         mechanical_vent 2020-05-04 2020-05-04
      #13     2 NA         mechanical_vent 2020-05-10 2020-05-10
      #14     2 NA         self_vent       2020-05-11 2020-05-11
      

      【讨论】:

        猜你喜欢
        • 2021-12-02
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 2020-10-16
        • 1970-01-01
        • 1970-01-01
        • 2012-03-20
        • 2018-12-07
        相关资源
        最近更新 更多