Используйте recode для очистки столбца фрейма данных - PullRequest
0 голосов
/ 04 мая 2020

Как использовать recode() для «очистки / удаления» определенных частей столбца в моем фрейме данных? Исходный фрейм данных выглядит следующим образом:

df <- data.frame(duration = c("concentration, up to 2 minutes", "concentration, up to 4 minutes", "up to 6 hours"), name = c("Earth", "Water", "Fire"))

Улучшенная версия выглядит следующим образом:

df <- data.frame(duration = c("2 minutes", "4 minutes", "6 hours"), name = c("Earth", "Water", "Fire"))

Итак, я должен удалить «концентрация» и «до» или заменить его пустой строкой с использованием функции recode.

1 Ответ

1 голос
/ 04 мая 2020

Пожалуйста, найдите оба решения с dplyr::recode() и с strings::str_remove().

Хотя я советую также изучить последнее. Таким образом, вы сможете изучить гораздо более мощные способы преобразования ваших строк с помощью регулярных выражений.

Решение с dplyr::recode()

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
df <- data.frame(duration = c("concentration, up to 2 minutes", 
                              "concentration, up to 4 minutes", 
                              "up to 6 hours"), 
                 name = c("Earth", "Water", "Fire"))

df$duration = recode(df$duration, 
                     "concentration, up to 2 minutes" = "2 minutes",
                     "concentration, up to 4 minutes" = "4 minutes",
                     "up to 6 hours" = "6 hours" )
df
#>    duration  name
#> 1 2 minutes Earth
#> 2 4 minutes Water
#> 3   6 hours  Fire

Создано в 2020-05-04 представьте пакет (v0.3.0)

Решение с stringr::str_remove()

library(stringr)
df <- data.frame(duration = c("concentration, up to 2 minutes", 
                              "concentration, up to 4 minutes", 
                              "up to 6 hours"), 
                 name = c("Earth", "Water", "Fire"))


df$duration = str_remove( df$duration, "^.*(?=\\d)")
df
#>    duration  name
#> 1 2 minutes Earth
#> 2 4 minutes Water
#> 3   6 hours  Fire

Создано в 2020-05-04 Представить пакет (v0.3.0)

...