【发布时间】:2018-03-14 14:37:32
【问题描述】:
我有三个数据帧(Df1、Df2、Df3)。这些数据框有一些共同的变量,但它们也各自包含一些独特的变量。我想确保所有变量都表示在所有数据帧中,例如材料存在于 Df2 中但不存在于 Df1 中,所以我想在 Df1 中创建一个名为材料的变量并将该变量设置为 NA。谢谢你的帮助。
起点(dfs):
Df1 <- data.frame("color"=c(1,1,1),"price"=c(1,1,1),"buyer"=c(1,1,1))
Df2 <- data.frame("color"=c(1,1,1),"material"=c(1,1,1),"size"=c(1,1,1))
Df3 <- data.frame("color"=c(1,1,1),"price"=c(1,1,1),"key"=c(1,1,1))
期望的结果(dfs):
Df1 <- data.frame("color"=c(1,1,1),"price"=c(1,1,1),"material"=c(NA,NA,NA),"buyer"=c(1,1,1),"size"=c(NA,NA,NA),"key"=c(NA,NA,NA))
Df2 <- data.frame("color"=c(1,1,1),"price"=c(NA,NA,NA),"material"=c(1,1,1),"buyer"=c(NA,NA,NA),"size"=c(1,1,1),"key"=c(NA,NA,NA))
Df3 <- data.frame("color"=c(1,1,1),"price"=c(1,1,1),"material"=c(NA,NA,NA),"buyer"=c(NA,NA,NA),"size"=c(NA,NA,NA),"key"=c(1,1,1))
到目前为止我的代码:(我正在尝试将单个数据框中的变量名称与所有三个数据框中的变量名称进行比较,并使用单个数据框中不存在的变量来生成新的变量集到 NA。但我最终得到: VarDf1 [,NewVariables]
dfs <- list(Df1,Df2,Df3)
numdfs <- length(dfs)
for (i in 1:numdfs)
{
VarDf1 <- as.vector(names(Df1))
VarDf2 <- as.vector(names(Df2))
VarDf3 <- as.vector(names(Df3))
VarAll <- c(VarDf1, VarDf2,VarDf3)
NewVariables <- as.vector(setdiff(VarAll, dfs[i]))
dfs[i][ , NewVariables] <- NA
}
【问题讨论】:
标签: r