Назначить значение в R на основе текстового содержимого списка - PullRequest
0 голосов
/ 10 марта 2020

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

Другими словами, у меня есть следующее:

country$author_country

MEX

COL

TUN

GBR

USA

BRA

etc. 

Я создал столбец author_region, заполненный NA. Я хочу назначить код региона каждому из значений author_country. Вместо того, чтобы делать это вручную, например что-то вроде if(country$author_country == MEX){country$author_region == 1},

Я надеялся, что есть способ создать объект, который позволил бы мне перечислить все страны региона, а затем присвоить значение в мой столбец author_region в зависимости от того, соответствует ли author_country содержимому этого объекта. Я думал о том, чтобы сделать это так:

LatAm <- list('COL', 'MEX', 'BRA')
for (i in country$author_country) if (country$author_country == LatAm)
{country$author_region[i] <- 1}

Я знаю, что это выглядит неправильно и, очевидно, не работает, но я не смог найти решение этой проблемы. Не могли бы вы помочь мне, пожалуйста?

Спасибо !!

1 Ответ

0 голосов
/ 11 марта 2020

ВРЕМЕННОЕ РЕШЕНИЕ:

Существует обходной путь:

country$author_region = unclass(as.factor(country$author_country)) + 1

В этом решении предполагается, что требуется обходной путь в одну строку и не важно, какая страна получает какой кодовый номер. В основном, операция, описанная выше, выполняет:

  1. Заполнение author_region точно author_country.
  2. Преобразование author_region в коэффициент.
  3. Расклассификация фактора , Отмена классификации заменяет фактор-вектор на целочисленный вектор, кодирующий каждый фактор.
  4. Добавление 1 к результату, поскольку unclass результат начинается с целого числа 0.

ЕСЛИ ДАННАЯ ФАЙЛА, КОТОРАЯ СКАЗЫВАЕТ НАМ КОД КАЖДОЙ СТРАНЫ ДОСТУПЕН:

Допустим, у вас есть фрейм данных country_codes со столбцами author_country, указывающими страну, и author_region, указывающими код, который вы собираетесь использовать, тогда вы можете использовать join :

library(tidyverse)

author %>%
  left_join(country_codes)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...