簡體   English   中英

將變量重新編碼為 R 中具有級別名稱的因子

[英]Recoding a variable to be a factor w/ level names in R

使用我的數據集自行車共享,我想將變量季節重新編碼為具有有意義的級別名稱(即“冬天”、“春天”、“夏天”、“秋天”)的因子,以春天為基准水平。

這是我的嘗試:

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"

我很感激任何幫助,我是初學者。

這是一個如何將數字 ( 1:4 ) 轉換為因子(“冬天”、“春天”、“夏天”、“秋天”)的示例。 關鍵是使用factor函數並相應地設置levelslabels

# 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

要創建因子,您需要向factor()函數提供數據和季節標簽。

但是,由於您希望 Spring 成為基線級別,我相信您必須按特定順序指定級別和標簽 - 強制 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

reprex 包(v0.2.1) 於 2019 年 3 月 3 日創建

這有點令人困惑,因為在seasonfactor ,Spring 用 1 表示,但在原始season中用 2 表示。

另一種選擇是在labelled包的幫助下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

reprex 包(v0.2.1) 於 2019 年 3 月 3 日創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM