У меня есть пример данных, заданный
df <- data.frame(
country = c("GermanyBerlin", "England (UK)London", "SpainMadrid", "United States of AmericaWashington DC", "HaitiPort-au-Prince", "country66city"),
capital = c("#Berlin", "NA", "#Madrid", "NA", "NA", "NA"),
url = c("/country/germany/01", "/country/england-uk/02", "/country/spain/03", "country/united-states-of-america/04", "country/haiti/05", "country/country6/06"),
stringsAsFactors = FALSE
)
country capital url
1 GermanyBerlin #Berlin /country/germany/01
2 England (UK)London NA /country/england-uk/02
3 SpainMadrid #Madrid /country/spain/03
4 United States of AmericaWashington DC NA country/united-states-of-america/04
5 HaitiPort-au-Prince NA country/haiti/05
6 country66city NA country/country6/06
Цель состоит в том, чтобы привести это в порядок, чтобы столбцы были такими, как можно было бы ожидать от их имен:
- первый должен содержать только название страны.
- второй должен содержать заглавную букву (без знака #).
- третий должен остаться без изменений.
Итак, мой желаемый результат:
country capital url
1 Germany Berlin /country/germany/01
2 England (UK) London /country/england-uk/02
3 Spain Madrid /country/spain/03
4 United States of America Washington DC country/united-states-of-america/04
5 Haiti Port-au-Prince country/haiti/05
6 country6 6city country/country6/06
В тех случаях, когда в столбце capital
есть записи, не относящиеся к NA, у меня есть фрагмент кода, который достигает этого (см. Нижнюю часть сообщения).
Поэтому я ищу решение, которое признает, что шаблон столбца url
может использоваться для выделения заглавной буквы из столбца country
.
Это необходимо учитывать тот факт, что
- текст URL-адреса в нижнем регистре, а название страны в том виде, в каком оно отображается в столбце
country
, имеет смешанные регистры.
- текст в URL заменяет пробелы дефисами.
- URL удаляет специальные символы (например, скобки вокруг Великобритании).
Мне было бы интересно посмотреть, как можно достичь этой цели, предположительно с помощью регулярных выражений (хотя они открыты для любых опций).
Частичное решение, когда столбец capital
не является NA
Если в столбце capital
есть записи, отличные от NA, следующий код достигает моей цели:
df %>% mutate( capital = str_replace(capital, "#", ""),
country = str_replace(country, capital,"")
)
country capital url
1 Germany Berlin /country/germany/01
2 England (UK)London NA /country/england-uk/02
3 Spain Madrid /country/spain/03
4 United States of AmericaWashington DC NA country/united-states-of-america/04