【问题标题】:Tidy way to add column if missing from data frame如果数据框中缺少列,则添加列的整洁方法
【发布时间】:2021-01-20 03:33:06
【问题描述】:

如果数据集中不存在缺失的列,我正在寻找一种简洁的方法来添加缺失的列。例如,df1 不包含列“c”。

df1 <- data.frame(a=c(1:3, NA), b=c(NA,2:4))

想要的输出:

df1 <- data.frame(a=c(1:3, NA), b=c(NA,2:4), c=c(NA, NA, NA, NA))

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    假设如果列已经存在于数据中,您不想覆盖它,您可以使用add_columnif 条件来检查列是否已经存在。

    library(dplyr)
    
    df1 <- data.frame(a=c(1:3, NA), b=c(NA,2:4))
    if(!'c' %in% names(df1)) df1 <- df1 %>% add_column(c = NA)
    df1
    
    #   a  b  c
    #1  1 NA NA
    #2  2  2 NA
    #3  3  3 NA
    #4 NA  4 NA
    

    【讨论】:

      【解决方案2】:

      我猜整洁的方式应该是dplyr::mutate

      library(dplyr)
      
      df1 <- df1 %>%
        mutate(c = c(NA))
      

      不需要指定多个NA,因为它将被回收以填充数据框的所有行。

      【讨论】:

        猜你喜欢
        • 2014-06-03
        • 1970-01-01
        • 1970-01-01
        • 2018-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-11
        • 2017-03-31
        相关资源
        最近更新 更多