当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。