создать переменную в кадре данных на основе другой матрицы на R - PullRequest
0 голосов
/ 30 января 2019

У меня возникли некоторые проблемы со следующей задачей. У меня есть фрейм данных этого типа с 99 разными странами для тысяч идентификаторов.

   ID  Nationality  var 1 var 2 ....
    1  Italy         //
    2  Eritrea       //
    3  Italy        //
    4  USA
    5  France
    6  France
    7  Eritrea
    ....

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

Nationality Continent
Italy       Europe
Eritrea     Africa
Usa         America
France      Europe
Germany     Europe
....

Я хотел бы получить это

        ID  Nationality  var 1 var 2 Continent
        1  Italy         //          Europe   
        2  Eritrea       //          Africa
        3  Italy        //           Europe
        4  USA                       America
        5  France                    Europe
        6  France                    Europe
        7  Eritrea                   Africa
        ....

Я пытался с помощью этой команды

datasubset <- merge(dataset , continent.matrix )

но не работает, выдает следующую ошибку Ошибка: невозможно выделить вектор размером 56,6 Мбайт

, что мне кажется очень странным, также пытается применить этот код к подмножеству, которое не работает,Есть ли у вас какие-либо предложения о том, как действовать?

Заранее большое спасибо за вашу помощь, надеюсь, мой вопрос звучит не слишком тривиально, но я совсем новичок в R

1 Ответ

0 голосов
/ 30 января 2019

Вы можете сделать это с помощью функции left_join (библиотека dplyr):

library(dplyr)
df <- tibble(ID=c(1,2,3),
             Nationality=c("Italy", "Usa", "France"),
             var1=c("a", "b", "c"),
             var2=c(4,5,6))

nat_cont <- tibble(Nationality=c("Italy", "Eritrea", "Usa", "Germany", "France"),
                   Continent=c("Europe", "Africa", "America", "Europe", "Europe"))


df_2 <- left_join(df, nat_cont, by=c("Nationality"))

Выход:

> df_2
# A tibble: 3 x 5
     ID Nationality var1   var2 Continent
  <dbl> <chr>       <chr> <dbl> <chr>    
1     1 Italy       a         4 Europe   
2     2 Usa         b         5 America  
3     3 France      c         6 Europe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...