R: извлечение числовых значений из строк в столбце - PullRequest
0 голосов
/ 23 февраля 2020

Меня интересует 1 указанный c столбец кадра данных, где каждая строка содержит имя окрестности и определенный c номер, присвоенный этой окрестности.

TOR - HOOD - Banbury-Don Mills (42) (23,6%)

Пожалуйста, посмотрите это изображение для лучшего понимания окрестность

Я только хочу извлечь первые числа в скобках. TOR - HOOD - Alderwood (20) (25,4%)

Я пытался использовать пакет stringr, но все функции принимают только 1 строку за раз. В этом столбце 140 строк, и мне нужны значения из всех строк. Я не уверен, как go через каждую строку в столбце

Вот что я пробовал и результаты

и некоторый код, который я использовал, но получил это ошибка ( Ошибка в UseMethod ("тип"): нет применимого метода для "типа", примененного к объекту класса "c ('tbl_df', 'tbl', 'data.frame')" )

hood_data<-tibble(hood=demo_edu_dataset$Geography)
head(hood_data)

hoodnum<-hood_data %>%
  #separate(hood, into= c("name", "number"), sep = "")
  stringr::str_extract_all(hood_data, "\\d")

Спасибо

Ответы [ 3 ]

1 голос
/ 23 февраля 2020
hoodnum<-hood_data %>%
 separate(Geography, into= c("name", "number"), sep = "\\(")

Это сработало

0 голосов
/ 23 февраля 2020

Или используйте str_extract из пакета stringr, а также положительный взгляд назад и вперед:

str_extract(YOURDATA, "(?<=\\()\\d{1,}(?=\\))")

Это регулярное выражение говорит: «когда вы видите ( слева и ) на справа, сопоставьте число, по крайней мере, с 1 ди git в середине ". Если обернуть as.numeric вокруг всего выражения, числа будут преобразованы из символа в число c:

as.numeric(str_extract(df$X, "(?<=\\()\\d{1,}(?=\\))"))
0 голосов
/ 23 февраля 2020

Может быть, вы можете попробовать gsub, как показано ниже, например,

df <- data.frame(X = c("TOR - HOOD - Alderwood (20) ( 25.4%)",
                       "TOR - HOOD - Annex (95) ( 27.9%)"))

df$Y <- as.numeric(gsub(".*?\\((\\w+)\\).*","\\1",df$X))

, такой что

> df
                                     X  Y
1 TOR - HOOD - Alderwood (20) ( 25.4%) 20
2     TOR - HOOD - Annex (95) ( 27.9%) 95
...