R、 2数据帧,检查列是否存在,如果不存在,则创建新变量

R、 2数据帧,检查列是否存在,如果不存在,则创建新变量,r,R,我有两个数据帧,希望有完全相同的列,以便稍后执行合并。我目前要做的是首先手动检查df1是否在df2中有每一列,如果没有,则创建一个新列并像这样分配空值df1$v3不确定为什么需要创建不必要的列并将它们分配给NA。但是,您可以这样做: v1<-c(1:5) v2<-c("a", "b", "c", "d", "e") df1<-data.frame(v1,v2) v3=c("de890","gyu","71g", "178sg", "ss10")\ v4<-c(1:5) d

我有两个数据帧,希望有完全相同的列,以便稍后执行合并。我目前要做的是首先手动检查df1是否在df2中有每一列,如果没有,则创建一个新列并像这样分配空值df1$v3不确定为什么需要创建不必要的列并将它们分配给NA。但是,您可以这样做:

v1<-c(1:5)
v2<-c("a", "b", "c", "d", "e")
df1<-data.frame(v1,v2)
v3=c("de890","gyu","71g", "178sg", "ss10")\
v4<-c(1:5)
df2<-data.frame(v1,v2,v3,v4)

# Finding the columns not found in df1, but df2
cols<-setdiff(names(df2),names(df1))

# Looping to create them in df1
for(i in cols){df1[[i]]<-NA}

正如@LAP所提到的,merge会自动添加带有NA的列,但如果OP仍然希望在之前添加列,则可以通过以下方式实现:

df1[,setdiff(names(df2),names(df1))] <- NA
df1
#   v1 v2 v3
# 1  1  a NA
# 2  2  b NA
# 3  3  c NA
# 4  4  d NA
# 5  5  e NA

如果你想合并这两个数据框,R会自动将NA值分配给缺少变量的行。我尝试这个代码席猜DPLYR::BDIN RUDSDF1,DF2是你想要的函数。最后,我发现我仍然需要匹配两个DF有相同的列,以便使用RBIN。我现在很好,谢谢大家!
v1<-c(1:5)
v2<-c("a", "b", "c", "d", "e")
df1<-data.frame(v1,v2)
v3=c("de890","gyu","71g", "178sg", "ss10")\
v4<-c(1:5)
df2<-data.frame(v1,v2,v3,v4)

# Finding the columns not found in df1, but df2
cols<-setdiff(names(df2),names(df1))

# Looping to create them in df1
for(i in cols){df1[[i]]<-NA}
df1[,setdiff(names(df2),names(df1))] <- NA
df1
#   v1 v2 v3
# 1  1  a NA
# 2  2  b NA
# 3  3  c NA
# 4  4  d NA
# 5  5  e NA