Я работаю с фреймом данных, используя 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))