首页 > 解决方案 > Python 的 .cat.codes 的 R 等效项是什么,它将分类变量转换为整数级别?

问题描述

在 python 中,您可以使用 .cat.code 为变量生成分类代码,例如

df['col3'] = df['col3'].astype('category').cat.code

你如何在 R 中做到这一点?

标签: rnumericcategorical-datar-factor

解决方案


为@Sid29 进一步充实这一点:

python方法函数.cat.code提取因子水平的数字表示。R中的等价物是:

a <- factor(c("good", "bad", "good", "bad", "terrible"))

as.numeric(a)
[1] 2 1 2 1 3

请注意,这.cat.code将代表NA(或NaN相同的事物),-1而 R 中的上述解决方案仍然是保留NA者,并且输出将是简单NA的 .

编辑:as.numeric(a)更好。labels有关于函数内部使用函数的讨论as.numeric。请参阅中的警告?factor

特别是,应用于因子的 as.numeric 是没有意义的,并且可能通过隐式强制发生。要将因子 f 转换为近似其原始数值,建议使用 as.numeric(levels(f))[f],并且比 as.numeric(as.character(f)) 稍微高效一些。

存在一些与以 NA 为水平的因素相关的异常情况。建议谨慎使用它们,例如,仅用于制表目的。

如果你有一个NA值,它会将所有值强制为NA,因此使用labels. 有趣的是,c(a)有效(参见下面的@42 答案)。


推荐阅读