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