【发布时间】:2017-02-16 15:27:09
【问题描述】:
我想从参考表的列种中提取信息并将其添加到表1的列种中
a <- c(1:10)
b <- c(2001,NA,NA,2004,2005,NA,2007,NA,2009,2010)
c <- c('A','B',NA,'D','E','F','G','H',NA,NA)
table1 <- data.frame(serial=a, id=b, species=c)
e <- c(2001:2010)
f <- c('A','B','C','D','E','F','G','H','I','J')
reference_table <- data.frame(id=e, species=f)
我想要两个不同的输出
输出 1 - 在第 9 行和第 10 列中分别得到 I 和 J,而保留第 3 行的 NA
#table1
#Serial id species
# 1 2001 A
# 2 NA B
# 3 NA NA
# 4 2004 D
# 5 2005 E
# 6 NA F
# 7 2007 G
# 8 NA H
# 9 2009 I
# 10 2010 J
输出 2 - 在第 2、6 和 8 列的第 2、6 和 8 行分别得到 2002、2006 和 2008。
#table1
#Serial id species
# 1 2001 A
# 2 2002 B
# 3 NA NA
# 4 2004 D
# 5 2005 E
# 6 2006 F
# 7 2007 G
# 8 2008 H
# 9 2009 I
# 10 2010 J
【问题讨论】:
-
您尝试过
merge()吗?您遇到的具体问题是什么? -
@MrFlick 我原来的 table1 是 9460 x 47,当我使用 merge(x = table1, y = reference_table, by = "ID", all = TRUE) 时,我得到了 1000 万行的输出跨度>
-
好吧,你可能不想要
all=T。您将需要all.x=T或all.y=T进行左连接或右连接。 -
@MrFlick 现在我使用了 all.x =T,它比原始表多 1000 行,如果 all.y =T 比原始表少 1600 行
-
你碰巧有重复吗?