在我的数据框中,我有一个具有以下类别的变量:
A1
,A2
,A3
,。 。 。 B1
,B2
,B3
,. 。 。 Z1
、Z2
、Z3
。
虽然变量不是数字,但我们可以根据字母和数字定义它们之间的逻辑顺序(上面描述的类别的顺序)。
我的问题是:
我们可以对这种类型的变量使用
<
、=
和 >
运算符吗?
例如,如果我想选择
var1
值介于 A1
和 G3
之间的行。我们可以使用类似df[df$var1>="A1" & df$var1<="G3",]
的东西吗?
我在 STATA 中看到了类似的代码,我想知道是否可以在 R 中做类似的事情。提前致谢。
是的,您可以使用有序因子。来自文档:
如果参数
是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 中有序因子变量和无序因子变量之间的差异中阅读更多相关信息。