r - 提取因子值在级别中的位置

标签 r r-factor

一段时间后我将返回 R,以下内容让我感到困惑:

我想建立一个因子值在因子级别列表中的位置列表。
例子:

> data = c("a", "b", "a","a","c")
> fdata = factor(data)
> fdata
[1] a b a a c
Levels: a b c
> fdata$lvl_idx <- ????

这样:
> fdata$lvl_idx
[1] 1 2 1 1 3

感谢任何提示或技巧。

最佳答案

如果您将一个因子转换为整数,您将获得级别中的位置:

as.integer(fdata)
## [1] 1 2 1 1 3

在某些情况下,这是违反直觉的:
f <- factor(2:4)
f
## [1] 2 3 4
## Levels: 2 3 4
as.integer(f)
## [1] 1 2 3

此外,如果您静默地强制转换为整数,例如通过使用因子作为向量索引:
LETTERS[2:4]
## [1] "B" "C" "D"
LETTERS[f]
## [1] "A" "B" "C"

转换为 character在转换为 integer 之前给出期望值。见 ?factor详情。

关于r - 提取因子值在级别中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20624209/

相关文章:

r - 更改 R 中的内部因子水平(对于避风港很重要 - write_dta())

R大数据框与因子在子集时不会缩小

r - 有没有办法根据各个图中的点数对不同的散点图进行颜色编码

r - 忽略 R 中 ggplot 的一个因素

R:使用因子变量删除逻辑变量中的数据

r - R中向量的子向量总和

r - 为什么 as.factor 在 apply 内部使用时会返回一个字符?

r - 更改 Geom_smooth 默认图例颜色

r - 在 R 中,为什么风格指南建议只使用双引号?

r - 我如何在R中找到字符中的特定字母