Исправьте опечатки города в R - PullRequest
0 голосов
/ 18 июня 2020

Я работаю с фреймом данных, используя R, в котором одна переменная - это название города в Техасе. Данные в этом столбце были введены вручную, что означает, что в названиях городов есть опечатки. Например, неправильные экземпляры слова «остин» записываются как «остин тх», «аустн», «аутисн». У меня есть фрейм данных всех городов, поселков, деревень и CDP (из файлов Gazetteer) в Техасе.

Мой основной фрейм данных содержит 7 597 наблюдений. Изучив данные, я обнаружил 7 285 правильных написаний и 305 опечаток или неправильных записей, сравнивая записи с местоположениями, указанными во фрейме данных Gazetteer. Не все неправильные записи были орфографическими ошибками (но большинство из них). Некоторые записи содержат номера улиц, названия или и то, и другое вместо названий городов. Я также считаю, что некоторые географические c местоположения не указаны в файле Gazetteer (например, Cypress, TX).

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

EDIT:

Мне было указано, что мне нужно предоставить воспроизводимый код в моем примере. Прошу прощения за недосмотр - я новичок в stackoverflow.

Ниже приведен код, который я использую для создания основного фрейма данных с данными сертификатора.

texas_certs <- read_xlsx("Texas_cert_Data.xlsx")

#This abbreviates the full length names of the certifications.
for (i in 1:nrow(texas_certs)) {
  if (texas_certs[i, 1] == "Board Certified Behavior Analyst-Doctoral") {
    texas_certs[i, 1] <- "BCBA-D"
  } else if (texas_certs[i, 1] == "Board Certified Behavior Analyst") {
    texas_certs[i, 1] <- "BCBA"
  } else if (texas_certs[i, 1] == "Board Certified Assistant Behavior Analyst") {
    texas_certs[i, 1] <- "BCaBA"
  }
}
#Lowercase cities to make analysis easier
texas_certs$`City (Contact)` <- tolower(texas_certs$`City (Contact)`)

#Renames the columns for texas_certs
texas_certs <- texas_certs %>%
  rename(city = `City (Contact)`, country = `Country (Contact)`)

Ниже приведен код для импорта и изменение данных географического справочника.

#Load Gazetteer files for Texas from US census.
texas_places <- read_tsv("2019_gaz_place_texas.txt")

#The name column includes the type of location that it is: city, town, village, or CDP
#First I'm going to separate out the city name and the type
#Next I'm going to create a new data frame with the data in NAME only including the location name,
#and the type of location as a separate variable.
texas_places_type <- str_extract_all(texas_places$NAME, 
                                     pattern = c(" city| town| village| CDP"))
texas_places_sep <- str_replace_all(texas_places$NAME, 
                                    pattern = c(" city| town| village| CDP"), 
                                    replacement = "")

texas_places_clean <- texas_places %>%
  mutate(NAME = texas_places_sep) %>%
  mutate(TYPE = as.character(texas_places_type))

texas_places_clean$NAME <- tolower(texas_places_clean$NAME)

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

#Create list of texas locations
texas_cities <- unique(texas_places_clean$NAME)

#It looks like there are a bunch of entry errors in the city column. 
#I'll run the code below to see how many cases I would remove if I just ignored every error.
texas_certs_cleaned <- texas_certs %>%
  filter(city %in% texas_cities)

texas_certs_misspelled <- texas_certs %>%
  filter(!(city %in% texas_cities))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...