R: Применение значений коэффициента из одного столбца к другому

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

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

municipality<-c("Espoo", "Oulu", "Tampere", "Joensuu", "Seinäjoki", 
"Kerava")
region<-c("Uusimaa","Pohjois-Pohjanmaa","Pirkanmaa","Pohjois-Karjala","Etelä-Pohjanmaa","Uusimaa")

myData<-cbind(municipality,region)
myData<-as.data.frame(myData)

По умолчанию R преобразует мои символьные столбцы в коэффициенты, которые можно проверить с помощью str(myData). Теперь перейдем к той части, где заканчиваются мои навыки от новичка до новичка уровня R: похоже, я не могу найти способ применить факторы из столбца region к столбцу municipality.

Позвольте мне продемонстрировать. Вместо первоначального результата

as.numeric(factor(myData$municipality))

[1] 1 4 6 2 5 3

Я хотел бы получить это, факторы из региона myData $ применимы к муниципалитету myData $.

as.numeric(factor(myData$municipality))

[1] 5 4 2 3 1 5

Я приветствую любую помощь с распростертыми объятиями. Спасибо.


person Vesanen    schedule 16.03.2018    source источник
comment
stackoverflow.com/a/5800785/5414452   -  person jogo    schedule 16.03.2018
comment
Вы хотите изменить порядок myData$municipality в соответствии с as.numeric(myData$region)? Если так, вы могли бы сделать myData$municipality[myData$region]. Как отметил @jogo, вы можете / должны использовать with() вместо attach(), например. with(myData, municipality[region]).   -  person markus    schedule 16.03.2018
comment
Спасибо за комментарии jogo и markus. Сначала я хотел бы остановиться на моем использовании attach (). Считайте, что это ушло. Я на самом деле никогда им не пользуюсь, но теперь по какой-то причине. В этой задаче я хотел бы получить уровень фактора region на уровне фактора municipality, заменив исходный. Например, levels(myData$municipality)<-c(levels(myData$region)) не работает. Простите меня, часть проблемы здесь, похоже, заключается в том, что я не так хорошо знаком с разговорным языком R или любым другим языком программирования в этом отношении.   -  person Vesanen    schedule 16.03.2018


Ответы (1)


Чтобы лучше понять использование фактора в R, загляните здесь.

Если вы хотите добавить уровни факторов, вам нужно сделать что-то вроде этого в своем фрейме данных:

levels(myData$region)
[1] "Etelä-Pohjanmaa"   "Pirkanmaa"         "Pohjois-Karjala"   "Pohjois-Pohjanmaa" "Uusimaa"          
> levels(myData$municipality)
[1] "Espoo"     "Joensuu"   "Kerava"    "Oulu"      "Seinäjoki" "Tampere"  
> levels(myData$municipality)<-c(levels(myData$municipality),levels(myData$region))
> levels(myData$municipality)
 [1] "Espoo"             "Joensuu"           "Kerava"            "Oulu"              "Seinäjoki"        
 [6] "Tampere"           "Etelä-Pohjanmaa"   "Pirkanmaa"         "Pohjois-Karjala"   "Pohjois-Pohjanmaa"
[11] "Uusimaa"
person Terru_theTerror    schedule 16.03.2018
comment
Спасибо за ответ, но я не пытаюсь этого добиться. Я пытаюсь использовать свой фреймворк для хранения информации в числовой форме, которая, например, принадлежит Эспоо и Керава в Уусимаа, а Йоэнсуу принадлежит Этеля-Похьянмаа с использованием факторов. - person Vesanen; 16.03.2018