我有两个具有不相等列尺寸的数据框,我试图将它们加在一起。我对其他可能的解决方案持开放态度,但理想情况下,我想用较少量的列强制数据帧与其他数据帧的大小相同,并引入数据丢失的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
感谢您的帮助!
答案 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