Попытка извлечь государственные сокращения - PullRequest
2 голосов
/ 12 июня 2019

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

Я попробовал какой-то код, который видел по другому вопросу:

df$State <- str_extract(df$Address, "\\b[A-Z]{2}"))

В большинстве случаев он работал хорошо, но также возвращал такие вещи, как "NW", который был частью адреса.Я также попытался:

ex_city_state(df$Address)

из пакета qdapRegex, который, казалось, работал, но я не уверен, как получить результаты в новом столбце.Вот пример адресов:

"212 E Superior St, Alma, MI 48801, USA"
"121 Industrial Rd, Belmont, CA 94002, USA"
"24 Gouverneur Ln, New York, NY 10005, USA"
"1701 Wright St, Madison, WI 53704, USA"
"15898 TX-123, San Marcos, TX 78666, USA"

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

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

addresses <- c("212 E Superior St, Alma, MI 48801, USA",
               "121 Industrial Rd, Belmont, CA 94002, USA",
               "24 Gouverneur Ln, New York, NY 10005, USA",
               "1701 Wright St, Madison, WI 53704, USA",
               "15898 TX-123, San Marcos, TX 78666, USA")
states <- sub(".*\\b([A-Z]{2}) \\d{5}.*", "\\1", addresses)
states

   1    2    3    4    5 
"MI" "CA" "NY" "WI" "TX" 
0 голосов
/ 12 июня 2019

ex_city_state возвращает вам список векторов. Чтобы добавить его в новый столбец, вы можете unlist их.

df$city_state <- unlist(qdapRegex::ex_city_state(df$Address))

Или в R state.abb имеется встроенный символьный вектор, в котором есть сокращения для всех состояний. Вы можете создать шаблон с помощью этого и извлечь состояния

stringr::str_extract(df$Address, paste0(state.abb, collapse = "|"))
#[1] "MI" "CA" "NY" "WI" "TX"

, что можно сделать в базе R, используя sub

sub(paste0(".*(", paste0(state.abb, collapse = "|"), ").*"), "\\1", df$Address)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...