R 语言因子

因子

Factors(因子) 用于对数据进行分类。这些因素的例子包括:

  • 人口统计: Male/Female
  • 音乐: Rock, Pop, Classic, Jazz
  • 训练: Strength, Stamina

要创建因子,请使用 factor() 函数并添加一个向量作为参数:

实例
  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))
  2. music_genre

结果如下:

[1] Jazz Rock Classic Classic Pop Jazz Rock Jazz
Levels: Classic Jazz Pop Rock

要仅打印级别,请使用 levels() 函数:

实例
  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))
  2. levels(music_genre)

结果如下:

[1] “Classic” “Jazz” “Pop” “Rock”

还可以通过在 factor() 函数中添加 levels 参数来设置级别:

实例
  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"), levels = c("Classic", "Jazz", "Pop", "Rock", "Other"))
  2. levels(music_genre)

结果如下:

[1] “Classic” “Jazz” “Pop” “Rock” “Other”

因子长度

使用 length() 函数找出因子中有多少项:

实例
  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))
  2. length(music_genre)

结果如下:

[1] 8

访问因子

要访问因子中的项,请使用 [] 括号根据索引编号:

实例

访问第 3 项:

  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))
  2. music_genre[3]

结果如下:

[1] Classic

Levels: Classic Jazz Pop Rock

修改项

要更改特定项的值,请根据索引编号:

实例

修改第 3 项的值:

  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))
  2. music_genre[3] <- "Pop"
  3. music_genre[3]

结果如下:

[1] Pop

Levels: Classic Jazz Pop Rock

请注意,如果尚未在因子中指定特定项的值,则无法更改该项的值。下面的实例将产生一个错误:

实例

尝试将第 3 项("Classic")的值更改为不存在/未预定义的项("Opera"):

  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))
  2. music_genre[3] <- "Opera"
  3. music_genre[3]

结果如下:

Warning message:

In `[<-.factor`(`*tmp*`, 3, value = "Opera") :

invalid factor level, NA generated

但是,如果您已经在 levels 参数中指定了它,那就没问题了:

实例

修改第 3 项的值:

  1. music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"), levels = c("Classic", "Jazz", "Pop", "Rock", "Opera"))
  2. music_genre[3] <- "Opera"
  3. music_genre[3]

结果如下:

[1] Opera

Levels: Classic Jazz Pop Rock Opera