Python的.cat.codes的R等价物是什么,它将分类变量转换为整数级别?

问题描述 投票:1回答:2

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

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

你是怎么用R做的?

r numeric categorical-data r-factor
2个回答
1
投票

为@ 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,而上述解决方案仍然保留NA和输出将简单NA

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

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

有一些异常与NA作为一个水平的因素有关。建议谨慎使用它们,例如仅用于制表目的。

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


0
投票

也许更清楚的是做以下事情:

# if you want numeric code for every value
a <- factor(c("good", "bad", "good", "bad", "terrible"))
as.integer(a)
# 2 1 2 1 3


# unique labels and the values for them
setNames(levels(a), seq_along(levels(a)))
#    1          2          3 
# "bad"     "good" "terrible"
© www.soinside.com 2019 - 2024. All rights reserved.