【发布时间】: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))
【问题讨论】:
如果数据集中不存在缺失的列,我正在寻找一种简洁的方法来添加缺失的列。例如,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))
【问题讨论】:
假设如果列已经存在于数据中,您不想覆盖它,您可以使用add_column 和if 条件来检查列是否已经存在。
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
【讨论】:
我猜整洁的方式应该是dplyr::mutate。
library(dplyr)
df1 <- df1 %>%
mutate(c = c(NA))
不需要指定多个NA,因为它将被回收以填充数据框的所有行。
【讨论】: