Застрял на dplyr - слить в R - PullRequest
0 голосов
/ 25 апреля 2018

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

library(dplyr)

#Examine data set/s

#Data frame: County polygon points
> head(oc_df)
           # long      lat group order region subregion
# 59960 -83.66902 39.02989  2012 59960   ohio     adams
# 59961 -83.56590 39.02989  2012 59961   ohio     adams
# 59962 -83.37109 39.06426  2012 59962   ohio     adams
# 59963 -83.30806 39.06426  2012 59963   ohio     adams
# 59964 -83.30233 39.05280  2012 59964   ohio     adams
# 59965 -83.25649 39.01842  2012 59965   ohio     adams

#Data frame: Indemnity 
head(oi_df)

# subregion indemnity
# 1 adams                           42778.25
# 2 allen                           88580.26
# 3 ashland                        167509.27
# 4 ashtabula                       25738.28
# 5 athens                           7080.00
# 6 auglaize                        99353.25


#Make sure indemnity is numeric & county is character
oi_df$indemnity <- as.numeric(oi_df$indemnity)
oi_df$subregion <- as.character(oi_df$subregion)

#Attach every point on polygons of the counties
ohcopa <- inner_join(oc_df, oi_df, by = "subregion")

#I get a list  of 0 obs. and 7 variables. 

#When that didn't work  I tried
ohcopa <- merge(oc_df, oi_df, by = "subregion")

#Still the same

Возможно, отсутствует что-то простое, не уверен, что это такое.

str(oi_df)
'data.frame':   86 obs. of  2 variables:
 $ subregion: chr  "adams                         " "allen                         " "ashland                       " "ashtabula                     " ...
 $ indemnity: num  42778 88580 167509 25738 7080 ...

> str(oc_df)
'data.frame':   1427 obs. of  6 variables:
 $ long     : num  -83.7 -83.6 -83.4 -83.3 -83.3 ...
 $ lat      : num  39 39 39.1 39.1 39.1 ...
 $ group    : num  2012 2012 2012 2012 2012 ...
 $ order    : int  59960 59961 59962 59963 59964 59965 59966 59967 59968 59969 ...
 $ region   : chr  "ohio" "ohio" "ohio" "ohio" ...
 $ subregion: chr  "adams" "adams" "adams" "adams" ...

1 Ответ

0 голосов
/ 25 апреля 2018

Выполните следующие действия:

oi_df$subregion <- trimws(oi_df$subregion) 

Попробуйте объединить потом.

Если вы посмотрите на свой субрегион, как определено в oi_df, вы увидите, например,

 "adams                         "

Обратите внимание, что в этом имени довольно много пробелов. Однако из вашего второго информационного кадра мы получаем

 "adams"

без пробелов вообще.

Следовательно, ключи, с которыми вы объединяетесь, разные, и их нужно сначала настроить. То есть, пробел из первого ключа должен быть удален (или добавлен ко второму, но давайте не будем думать об этом). Функция trimws в базовом пакете или, например, str_trim в stringr (и многих других эквивалентных функциях в других пакетах) сделает это за вас.

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