изменить определенные столбцы с помощью tidyverse

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

      p4[,1:5] <- lapply(p4[,1:5] , factor)

Столбцы 1-5 были персонажами, и я хотел, чтобы они были факторами. Однако с dplyr я не справился. Мое предположение было:

      df <- df %>% select(1:5) %>% mutate(as_factor)

Но это отбрасывает все остальные столбцы из-за функции выбора. Кроме того, mutate_if здесь не очень полезен, потому что у меня есть другие символы, которые я не хочу менять.

Большое спасибо.

1 ответ

Один из подходов к применению функции к нескольким столбцам - это dplyr::across() функция.

Я не видел примерного набора данных, поэтому создал свой собственный.

      library(dplyr)
data <- data.frame(
  stringsAsFactors = FALSE,
              col1 = c("apple", "pear"),
              col2 = c("wood", "fire"),
              col3 = c("cup", "plate"),
              col4 = c("pen", "pencil"),
              col5 = c("money", "coins")
)

data %>% 
  mutate(across(.cols = 1:5, .fns = factor)) %>% 
  str()
#> 'data.frame':    2 obs. of  5 variables:
#>  $ col1: Factor w/ 2 levels "apple","pear": 1 2
#>  $ col2: Factor w/ 2 levels "fire","wood": 2 1
#>  $ col3: Factor w/ 2 levels "cup","plate": 1 2
#>  $ col4: Factor w/ 2 levels "pen","pencil": 1 2
#>  $ col5: Factor w/ 2 levels "coins","money": 2 1
Другие вопросы по тегам