我有两个向量:
addClass
我需要两个数据框:
v1= c('a', 'b', 'c')
v2 = c('b', 'c', 'd')
和:
v1 v2
a NA
b b
c c
NA d
最好的方法是什么?
答案 0 :(得分:3)
获取第一个
mergedf=merge(data.frame('key'=v1,v1),data.frame('key'=v2,v2),by='key',all=T)
mergedf
key v1 v2
1 a a <NA>
2 b b b
3 c c c
4 d <NA> d
获取第二个df
mergedf[!is.na(mergedf$v1),]
key v1 v2
1 a a <NA>
2 b b b
3 c c c
4 d <NA> d
答案 1 :(得分:0)
可以选择基于dplyr
的解决方案。您可以将full_join
和left_join
用作:
library(dplyr)
v1= c('a', 'b', 'c')
v2 = c('b', 'c', 'd')
full_join(data.frame(key=v1, v1, stringsAsFactors = FALSE),
data.frame(key=v2, v2, stringsAsFactors = FALSE), by="key") %>%
select(-key)
# v1 v2
# 1 a <NA>
# 2 b b
# 3 c c
# 4 <NA> d
left_join(data.frame(key=v1, v1, stringsAsFactors = FALSE),
data.frame(key=v2, v2, stringsAsFactors = FALSE), by="key") %>%
select(-key)
# v1 v2
# 1 a <NA>
# 2 b b
# 3 c c