每次当我必须重新编码一组变量时,我都会想到 SPSS 重新编码功能。我必须承认这非常简单。有一个类似的recode
函数于car
包,它确实有效,但我们假设我想用factor
.
I have data.frame
有多个值范围从 1 到 7 的变量。我想“反转”变量值,因此用 7 替换 1,用 6 替换 2,用 5 替换 3,等等。我可以利用factor
功能:
# create dummy factor
set.seed(100)
x <- as.factor(round(runif(100,1,7)))
y <- factor(x, levels = rev(levels(x)))
如果我运行:
> levels(x)
[1] "1" "2" "3" "4" "5" "6" "7"
> levels(y)
[1] "7" "6" "5" "4" "3" "2" "1"
当我想重新编码不具有相同级别的因子时,问题就开始了。如果某个因子 z 有水平c("1", "3", "4", "6", "7")
,我是否有机会通过利用“反转”级别,例如 1=7、2=6、3=5 等factor
功能?
其他有效的重新编码功能应该足够了!
您必须提供levels
因子的论证(正如德克所写):
set.seed(2342472)
( x <- round(runif(10,1,7)) )
# [1] 7 5 5 3 1 2 5 3 3 2
( xf <- as.factor(x) )
# [1] 7 5 5 3 1 2 5 3 3 2
# Levels: 1 2 3 5 7
( yf <- factor(x,levels=7:1) )
# [1] 7 5 5 3 1 2 5 3 3 2
# Levels: 7 6 5 4 3 2 1
你也可以在现有因素上做到这一点
( yxf <- factor(xf,levels=7:1) )
# [1] 7 5 5 3 1 2 5 3 3 2
#Levels: 7 6 5 4 3 2 1
正如您所看到的,级别是按需求顺序扩展的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)