Как добавить переменную из одного кадра данных в другой (несколько условий) - PullRequest
0 голосов
/ 05 ноября 2018

Я прочитал существующие темы, но ничего, что я прочитал, не соответствовало тому, что я хочу сделать.

кадр данных 1: новые данные (отрывок)

country year      sector    emissions
Austria 1990       Total    6.229223e+04
Austria 1990   Regulated    3.826440e+04
Austria 1990 Unregulated    2.402783e+04
Austria 1991       Total    6.589968e+04
Austria 1991   Regulated    3.931820e+04
Austria 1991 Unregulated    2.658148e+04

кадр 2: EUETS (отрывок)

country         year  emissions
Austria         2005  164925659
Belgium         2005  282762153
Croatia         2005          0
Cyprus          2005   16021583
Czech Republic  2005  288986144
Denmark         2005  171815416
Estonia         2005   71336242

Что я хочу сделать:

  • Добавить информацию из EUETS$emissions в новый столбец newdata$EUETS
  • эта диссертация должна основываться на стране и году и быть вставлена ​​в строку для этой страны и года, где newdata$sector = "regulated"
  • newdata$sector = "unregulated" и newdata$sector = "Total" необходимо получить NA и ни при каких условиях 0
  • если в EUETS$country и / или EUETS$year нет соответствующей информации, NA следует вставить в newdata$EUETS
  • если есть информация в EUETS$emissions, но нет соответствующего года и / или страны для этого в newdata, должна быть создана новая строка для этой информации, заполняющая значения из EUETS, как указано выше, но с добавлением NA в новых ячейках для newdata$emissions = Total и newdata$unregulated.

Это должно выглядеть так:

country         year      sector    emissions     EUETS
Austria         1990       Total    6.229223e+04  NA
Austria         1990   Regulated    3.826440e+04  2516843
Austria         1990 Unregulated    2.402783e+04  NA
Austria         1991       Total    6.589968e+04  NA
Austria         1991   Regulated    3.931820e+04  446656
Austria         1991 Unregulated    2.658148e+04  NA
Liechtenstein   2005 Total          NA            NA
Liechtenstein   2005 Regulated      NA            654612641
Liechtenstein   2005 Unregulated    NA            NA

Лихтенштейн был только в EUETS$country и не существовал в newdata$country и, следовательно, был добавлен к последнему фрейму данных.

Это может быть несколько вопросов / сообщений в одном, но я надеюсь, что это уместно задать здесь. Я попробовал несколько вещей, но мне не удалось, особенно когда дело доходит до заполнения значений в существующие столбцы в новых данных (страна и год).

Я ценю помощь с любой частью этой задачи.

Заранее большое спасибо!

Nordsee

1 Ответ

0 голосов
/ 05 ноября 2018

Во-первых, измените имена столбцов EUETS и сектор так, как вы хотите, чтобы они отображались в конце:

names(EUETS)[3] = "EUETS"
EUETS$sector = "Regulated"

Убедитесь, что ваш исходный сектор столбца является символом, а не фактором:

newdata$sector = as.character(newdata$sector)

Объединить данные

result = merge(newdata, EUETS, all = TRUE)

Для добавления непредставленных стран обратно в EUETS я не уверен, какие значения year и emissions вы хотите добавить, поэтому я пока проигнорирую это. Но в основном вы хотите использовать merge снова.

...