2017-02-16 14 views
0

Я хочу, чтобы извлечь информацию из видов столбцов справочной таблицы и добавить его к виду колонки table1матча первая таблица для второй таблицы и копии соответствующей информации из второй таблицы, чтобы первая таблицу с помощью R

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 -где в колонке видов row9 и 10 получили я и J соответственно., в то время как NA на 3-й ряд был сохранен

#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 

OUTP ut 2 - где в столбце id строка 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 
+2

ли вы попытку '' слияния на все еще()? В чем именно проблема, с которой вы сталкиваетесь? – MrFlick

+0

@MrFlick Моя исходная таблица1 равна 9460 на 47, когда я использовал слияние (x = table1, y = reference_table, by = "ID", all = TRUE), я получил вывод из 10 миллионов строк –

+0

Ну, вы, вероятно, не хотите 'все = T'. Вам понадобится 'all.x = T' или' all.y = T' для левого или правого соединения. – MrFlick

ответ

0

Я использовал MySQL

UPDATE table1 AS a JOIN reference_table AS b ON a.species = b.species SET a.id = b.id 

UPDATE table1 AS a JOIN reference_table AS b ON a.id= b.id SET a.species = b.species