R удалить "st", "nd", "rd", "th" из нескольких столбцов в кадре данных - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть фрейм данных с именами хоккейной команды в столбце 1. В столбцах 2-16 ранжируются категории статистики (1-й, 2-й, 3-й, 4-й ... и т. Д.).Я хочу удалить все нечисловые суммы из всех категорий, чтобы у меня осталось (1, 2, 3, 4 ...)

Я знаю, что вы можете gsub("th", "", dataframe$column_name) для каждого столбца, но есть лиспособ сделать это быстро по всем столбцам?

1 Ответ

0 голосов
/ 27 февраля 2019

Одной из идей является использование mutate_at для применения функции замены к нужному столбцу следующим образом.Здесь я предоставил две функции замены: str_replace и str_extract, которые обе работают.mutate_at, str_replace и str_extract все из пакета tidyverse.

library(tidyverse)

# Create an example data frame
dat <- tibble(
  A = c("1st", "2nd", "3rd"),
  B = c("8th", "5th", "6th"),
  C = c("7th", "101st", "23rd"),
  Team = c("A", "B", "C")
)

# Solution 1: str_replace
dat %>%
  mutate_at(vars(-Team), list(~as.integer(str_replace(., "st|nd|rd|th", ""))))
# # A tibble: 3 x 4
#       A     B     C Team 
#   <int> <int> <int> <chr>
# 1     1     8     7 A    
# 2     2     5   101 B    
# 3     3     6    23 C 

# Solution 2: str_extract
dat %>%
  mutate_at(vars(-Team), list(~as.integer(str_extract(., "[0-9]*"))))
# # A tibble: 3 x 4
#       A     B     C Team 
#   <int> <int> <int> <chr>
# 1     1     8     7 A    
# 2     2     5   101 B    
# 3     3     6    23 C
...