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

У меня есть фрейм данных с именем Deals, а одна из переменных - $DealYear. Содержит 3 фактора (2013, 2014, 2015). У меня есть еще один столбец в Deals под названием $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 и Deflator$Year?

1 Ответ

0 голосов
/ 15 января 2020

Это типичное использование функции 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

output

  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",...).

...