分类变量中的数学运算符

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

在我的数据框中,我有一个具有以下类别的变量:

A1
A2
A3
,。 。 。
B1
B2
B3
,. 。 。
Z1
Z2
Z3

虽然变量不是数字,但我们可以根据字母和数字定义它们之间的逻辑顺序(上面描述的类别的顺序)。


我的问题是:

我们可以对这种类型的变量使用

<
=
>
运算符吗?

例如,如果我想选择

var1
值介于
A1
G3
之间的行。我们可以使用类似
df[df$var1>="A1" & df$var1<="G3",]
的东西吗?

我在 STATA 中看到了类似的代码,我想知道是否可以在 R 中做类似的事情。提前致谢。

r categories
1个回答
2
投票

是的,您可以使用有序因子。来自文档

如果参数

ordered
TRUE
,则假定因子水平是有序的。

fct_levels = c("Python", "Julia", "R")

df  <- data.frame(
    var1 = factor("R", levels = fct_levels, ordered = TRUE),
    var2 = factor("Python", levels = fct_levels, ordered = TRUE)
)

df
#   var1   var2
# 1    R Python

df$var1
# Levels: Python < Julia < R

with(df, var1 > var2) # TRUE
with(df, var2 > var1) # FALSE

注意文档中的警告:

有序因子与因子仅在类别上有所不同,但方法和模型拟合函数对这两个类别的处理方式截然不同。

具体来说,这与是否使用正交多项式或处理对比有关。您可以在R 中有序因子变量和无序因子变量之间的差异中阅读更多相关信息。

© www.soinside.com 2019 - 2024. All rights reserved.