Перекодирование переменной в фактор с именами уровней в R - PullRequest
0 голосов
/ 03 марта 2019

Используя мой набор данных bikeshare Я хочу перекодировать переменную season , чтобы она была фактором с осмысленными именами уровней (например, "зима", "весна", "лето",«падение»), с пружиной в качестве базового уровня.

Вот моя попытка:

bikeshare <- bikeshare %>%
mutate(season = factor(c(1 = "winter", 
                      2 = "spring", 
                      3 = "summer", 
                      4 = "fall")))    

Вот ошибка, которую я получаю:

Error in UseMethod("mutate_") : no applicable method for 'mutate_' applied 
to an object of class "factor"

I 'Буду признателен за любую помощь, я новичок.

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Чтобы создать коэффициент, необходимо предоставить данные и метки сезона для функции factor().

Однако, поскольку вы хотите, чтобы Spring был базовым уровнем, я думаю, вам придется указатьуровни и метки в определенном порядке - пружина должна быть первой:

bikeshare <- data.frame(season = 1:4)

bikeshare$seasonfactor <- factor(x = bikeshare$season,
                                 levels = c(2,3,4,1), 
                                 labels = c("spring", "summer", "fall", "winter"))

str(bikeshare$seasonfactor)
#>  Factor w/ 4 levels "spring","summer",..: 4 1 2 3

bikeshare
#>   season seasonfactor
#> 1      1       winter
#> 2      2       spring
#> 3      3       summer
#> 4      4         fall

Создано в 2019-03-03 пакетом Представить (v0.2.1)

Это немного сбивает с толку, потому что в seasonfactor Spring представляется как 1, а в оригинальном season он представлен как 2.

0 голосов
/ 03 марта 2019

Другой альтернативой является маркировка целочисленных уровней с помощью пакета labelled.Таким образом, они остаются целыми числами, но с метками в качестве метаданных.Если в какой-то момент вы хотите преобразовать помеченные целые числа в факторы, вы можете добиться этого с помощью функции to_factor.

library("tidyverse")
library("labelled")

labels <- c(
  "winter" = 1,
  "spring" = 2,
  "summer" = 3,
  "fall" = 4)

bikeshare <-
  tibble(season = 1:4) %>%
  mutate(season = labelled(season, labels)) %>%
  mutate(seasonF = to_factor(season))
bikeshare
#> # A tibble: 4 x 2
#>       season seasonF
#>    <int+lbl> <fct>  
#> 1 1 [winter] winter 
#> 2 2 [spring] spring 
#> 3 3 [summer] summer 
#> 4 4 [fall]   fall

Создано в 2019-03-03 с помощью представпакет (v0.2.1)

0 голосов
/ 03 марта 2019

Вот пример того, как преобразовать число (1:4) в коэффициент («зима», «весна», «лето», «осень»).Ключ должен использовать функцию factor и установить levels и labels соответственно.

# Create example data frame
bikeshare <- data.frame(season = 1:4)

bikeshare
#   season
# 1      1
# 2      2
# 3      3
# 4      4

library(dplyr)

bikeshare2 <- bikeshare %>%
  mutate(season = factor(as.character(season), 
                         levels = c(1, 2, 3, 4),
                         labels = c("winter", "spring", "summer", "fall")))
bikeshare2
#   season
# 1 winter
# 2 spring
# 3 summer
# 4   fall
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...