當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R haven as_factor 將標記向量轉換為因子

基函數 as.factor() 不是泛型函數,但 forcats::as_factor() 是泛型函數。 Haven 為 labelled()labelled_spss() 向量和數據幀提供了 as_factor() 方法。默認情況下,當應用於 DataFrame 時,它僅影響帶標簽的列。

用法

# S3 method for data.frame
as_factor(x, ..., only_labelled = TRUE)

# S3 method for haven_labelled
as_factor(
  x,
  levels = c("default", "labels", "values", "both"),
  ordered = FALSE,
  ...
)

# S3 method for labelled
as_factor(
  x,
  levels = c("default", "labels", "values", "both"),
  ordered = FALSE,
  ...
)

參數

x

反對強製某個因子。

...

其他參數傳遞給方法。

only_labelled

隻適用於帶標簽的列?

levels

如何創建生成因子的級別:

  • "default":如果可用,則使用標簽,否則使用值。標簽按值排序。

  • "both":與"default"類似,但將級別和值粘貼在一起

  • "label":僅使用標簽;未標記的值變為NA

  • “值:僅使用值

ordered

如果TRUE 創建一個有序(序數)因子,如果FALSE(默認)創建一個常規(名義)因子。

細節

包括類 haven_labelledlabelled 的方法,以實現向後兼容性。

例子

x <- labelled(sample(5, 10, replace = TRUE), c(Bad = 1, Good = 5))

# Default method uses values where available
as_factor(x)
#>  [1] 3   4   4   Bad 2   3   Bad 3   Bad 3  
#> Levels: Bad 2 3 4 Good
# You can also extract just the labels
as_factor(x, levels = "labels")
#>  [1] <NA> <NA> <NA> Bad  <NA> <NA> Bad  <NA> Bad  <NA>
#> Levels: Bad Good
# Or just the values
as_factor(x, levels = "values")
#>  [1] 3 4 4 1 2 3 1 3 1 3
#> Levels: 1 2 3 4
# Or combine value and label
as_factor(x, levels = "both")
#>  [1] 3       4       4       [1] Bad 2       3       [1] Bad 3      
#>  [9] [1] Bad 3      
#> Levels: [1] Bad 2 3 4 [5] Good

# as_factor() will preserve SPSS missing values from values and ranges
y <- labelled_spss(1:10, na_values = c(2, 4), na_range = c(8, 10))
as_factor(y)
#>  [1] 1  2  3  4  5  6  7  8  9  10
#> Levels: 1 2 3 4 5 6 7 8 9 10
# use zap_missing() first to convert to NAs
zap_missing(y)
#>  [1]  1 NA  3 NA  5  6  7 NA NA NA
#> attr(,"class")
#> [1] "haven_labelled"
as_factor(zap_missing(y))
#>  [1] 1    <NA> 3    <NA> 5    6    7    <NA> <NA> <NA>
#> Levels: 1 3 5 6 7
源代碼:R/as_factor.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Convert labelled vectors to factors。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。