Как удалить первые несколько символов в столбце в R? - PullRequest
0 голосов
/ 29 апреля 2020

Мои данные (файл csv) содержат столбец, содержащий неинформативные символы (например, специальные символы, случайные строчные буквы), и я хочу удалить их.

df <- data.frame(Affiliation = c(". Biotechnology Centre, Malaysia Agricultural Research and Development Institute (MARDI), Serdang, Malaysia","**Institute for Research in Molecular Medicine (INFORMM), Universiti Sains Malaysia, Pulau Pinang, Malaysia","aas Massachusetts General Hospital and Harvard Medical School, Center for Human Genetic Research and Department of Neurology , Boston , MA , USA","ac Albert Einstein College of Medicine , Department of Pathology , Bronx , NY , USA"))

Количество символов, которые я хочу удалить (например, ".", "**", "aas", "a c") в строке, является неопределенным, как показано выше.

Ожидаемый результат:

df <- data.frame(Affiliation = c("Biotechnology Centre, Malaysia Agricultural Research and Development Institute (MARDI), Serdang, Malaysia","Institute for Research in Molecular Medicine (INFORMM), Universiti Sains Malaysia, Pulau Pinang, Malaysia","Massachusetts General Hospital and Harvard Medical School, Center for Human Genetic Research and Department of Neurology , Boston , MA , USA","Albert Einstein College of Medicine , Department of Pathology , Bronx , NY , USA"))

Я думал об использовании функции изменения dplyr, но я не уверен, как go узнать об этом.

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Если мы предположим, что действительный текст начинается с первого заглавного и далее, то работает следующее:

library(tidyverse)
df %>% 
  mutate(Affiliation = str_extract(Affiliation, "[:upper:].+"))
0 голосов
/ 29 апреля 2020

Решение регулярного выражения Base R:

df$cleaned_str <- gsub("^\\w+ |^\\*+|^\\. ", "", df$Affiliation)

Решение регулярного выражения Tidyverse:

library(tidyverse)
df %>% 
  mutate(Affiliation = str_replace(Affiliation, "^\\w+ |^\\*+|^\\. ", ""))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...