gpt4 book ai didi

重新编码/重新调整具有不同级别的 data.frame 因素

转载 作者:行者123 更新时间:2023-12-04 03:31:11 28 4
gpt4 key购买 nike

每次当我必须重新编码一组变量时,我都会想到 SPSS 重新编码功能。我必须承认这很简单。有一个类似的recode函数在 car包,它可以解决问题,但让我们假设我想用 factor 完成任务.

我有 data.frame具有值范围从 1 到 7 的几个变量。我想“反转”变量值,因此将 1s 替换为 7s,将 2s 替换为 6s,将 3s 替换为 5s 等。我可以使用 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") ,是否有机会通过使用 factor 来“反转”级别,因此 1=7、2=6、3=5 等功能?

其他高效的重新编码功能就足够了!

最佳答案

您必须提供 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

如您所见,级别按需求顺序扩展。

关于重新编码/重新调整具有不同级别的 data.frame 因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342472/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com