Как мне найти значение из другой таблицы, чтобы заполнить существующий столбец таблицы?

У меня есть датафрейм Deals и одна из переменных - $DealYear . Это содержит 3 фактора (2013, 2014, 2015). У меня есть другой столбец в Deals под названием $GDPDeflator который в настоящее время не $GDPDeflator . Например:

#Deals table 

DealID   DealAmt  DealYear  Name  GDPDeflator   Website
100101    200       2013     ABC        0       www.abc.com
120022    3000      2014     EFG        0       www.efg.com
300012    650       2013     HIJ        0       www.hij.com

У меня есть небольшая вторая таблица с именем Deflator, которая содержит значения, которые мне нужны для Deals$GDPDeflator :

#Deflator table
Year   Defl
2012   1.10
2013   1.08
2014   1.055
2015   1.046
2016   1.03 

Как посмотреть значения для Deals$GDPDeflator из Deflator$Defl на основе Deals$DealYear и Deals$DealYear Deflator$Year ?

Всего 1 ответ


Это типичное использование функции merge как предлагается в комментариях.

Поскольку вы не предоставили минимальный воспроизводимый пример, я должен подготовить игрушечный пример.

deals.df <- data.frame(DealID = abs(rnorm(3)),
                       DealYear = c(2013,2014,2015),
                       DealAmt = abs(rnorm(3)))
deflator.df <- data.frame(Year=c(2012:2016),
                          Defl=c(1.1,1.08,1.055,1.046,1.03))

На этом этапе вы можете переименовать DealYear в Year в deals.df (или наоборот) или, как я покажу ниже, использовать by.x и by.y чтобы указать merge имя столбца в каждом фрейме данных.

NEW.deals.df <- merge(deals.df, deflator.df, by.x = "DealYear", by.y = "Year")

NEW.deals.df

выход

  DealYear    DealID   DealAmt  Defl
1     2013 2.4428505 0.8423267 1.080
2     2014 0.7864217 1.7308812 1.055
3     2015 1.2319621 0.7857849 1.046

Теперь вы можете переставить столбцы, если это необходимо.

Обратите внимание, что вы можете сопоставлять строки между фреймами данных с более чем одним столбцом в качестве идентификатора, используя by=c("colname1","colname2",...) .


Есть идеи?

10000