←
PDF 250 / 520 Creating Factors
→
English · PDF 250
Original PDF page 250
中文 · PDF 250

创建因子

假设你有一个记录月份的变量:

x1 <- c("Dec", "Apr", "Jan", "Mar")

使用字符串来记录这个变量有两个问题:

    1. 一年只有十二个可能的月份,而且没有任何机制防止拼写错误:x2 <- c("Dec", "Apr", "Jam", "Mar")
    1. 它不能以有用的方式排序:

sort(x1) #> [1] "Apr" "Dec" "Jan" "Mar"

你可以用因子来解决这两个问题。要创建一个因子,必须先创建一个有效水平的列表:

month_levels <- c( "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" )

现在你可以创建一个因子:

y1 <- factor(x1, levels = month_levels) y1 #> [1] Dec Apr Jan Mar #> Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec sort(y1) #> [1] Jan Mar Apr Dec #> Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

任何不在该集合中的值都会被静默转换为 NA:

y2 <- factor(x2, levels = month_levels) y2 #> [1] Dec Apr Mar #> Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

如果你希望得到一个错误,可以使用 readr::parse_factor():

y2 <- parse_factor(x2, levels = month_levels) #> Warning: 1 parsing failure. #> row col expected actual #> 3 -- value in level set Jam

如果省略 levels,它们将按字母顺序从数据中获取: