强制使用不同列的data.frame,使用R中的另一个data.frame

时间:2014-04-15 21:27:07

标签: r dataframe

我有两个具有不相等列尺寸的数据框,我试图将它们加在一起。我对其他可能的解决方案持开放态度,但理想情况下,我想用较少量的列强制数据帧与其他数据帧的大小相同,并引入数据丢失的NA。这是一些代码:

sampleDF1 <- data.frame(v1 = c(1,1,1), v2 = c(1,1,1), v3 = c(1,1,1))
sampleDF2 <- data.frame(v1 = c(1,1,1), v2 = c(1,1,1))

desiredOutput <- data.frame(v1 = c(1,1,1), v2 = c(1,1,1), v3 = c(NA,NA,NA))

# Final operation that I want to compute
sampleDF1 + desiredOutput

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

假设两个数据帧的行数相同,您只需要向sampleDF2添加列(而不是向两者添加列),这对您有用:

sampleDF2[,names(sampleDF1)[!names(sampleDF1) %in% names(sampleDF2)]] <- NA
sampleDF2
##   v1 v2 v3
## 1  1  1 NA
## 2  1  1 NA
## 3  1  1 NA
all.equal(sampleDF2, desiredOutput)
## [1] TRUE

答案 1 :(得分:0)

这是一个更简单易读的@ Thomas&#39;使用setdiff回答:

> sampleDF2[, setdiff( names(sampleDF1), names(sampleDF2) ) ] <- NA
> sampleDF2
  v1 v2 v3
1  1  1 NA
2  1  1 NA
3  1  1 NA