R 如何将数字转换为具有预定义标签的因子

Ami*_*tai 4 r r-factor

labs = letters[3:7]
vec = rep(1:5,2)
Run Code Online (Sandbox Code Playgroud)

如何获得水平为“c”“d”“e”“f”“g”的因子?

Kum*_*lam 6

你可以这样做:

labs = letters[3:7]
vec = rep(1:5,2)
factorVec <- factor(x=vec, levels=sort(unique(vec)), labels = c( "c", "d", "e", "f", "g"))
Run Code Online (Sandbox Code Playgroud)

我对 进行了排序unique(vec),以使结果一致。unique()将根据元素的第一次出现返回唯一值。通过指定顺序,代码变得更加健壮。

另外,通过指定级别和标签,我认为代码将变得更具可读性。

编辑

如果您使用查看文档?factor,您会发现:

levels
是 x 可能采用的值(作为字符串)的可选向量。默认值是 as.character(x) 所采用的唯一值集,按 x 的递增顺序排序。请注意,该集合可以指定为小于 sort(unique(x))

因此您可以注意到,因子派系本身内部存在一些排序。但我认为应该添加级别信息,以使代码更具可读性。

  • 嗯...“factor(vec, labels = labs)”怎么样? (2认同)