gpt4 book ai didi

r - 从 SPSS 到 R 的自动编码

转载 作者:行者123 更新时间:2023-12-02 05:13:37 25 4
gpt4 key购买 nike

我想编写一个与 SPSS 命令 AUTORECODE 功能相同的函数。

AUTORECODE 将字符串和数字变量的值重新编码为连续的整数,并将重新编码的值放入称为目标变量的新变量中。

一开始我是这样尝试的:

AUTORECODE <- function(variable = NULL){
A <- sort(unique(variable))
B <- seq(1:length(unique(variable)))
REC <- Recode(var = variable, recodes = "A = B")
return(REC)
}

但这会导致错误。我认为问题是由 A 和 B 对 recodes 参数的 promise 引起的。这就是我尝试的原因

eval(parse(text = paste("REC <- Recode(var = variable, recodes = 'c(",A,") = c(",B,")')")))

在函数中。但这不是正确的解决方案。

想法?

最佳答案

factor 可能正是您所需要的,正如 James 在评论中所建议的那样,它在幕后将它们存储为整数(如 str 所见)并仅输出相应的标签。这也可能非常有用,因为 R 有很多命令可以适本地处理因子,例如在拟合线性模型时,它会为您生成所有“虚拟”变量。

> x <- LETTERS[c(4,2,3,1,3)]
> f <- factor(x)
> f
[1] D B C A C
Levels: A B C D

> str(f)
Factor w/ 4 levels "A","B","C","D": 4 2 3 1 3

如果您只需要数字,请在因子上使用 as.integer

> n <- as.integer(f)
> n
[1] 4 2 3 1 3

另一种解决方案是使用 match,但如果您从 float 开始,请注意浮点陷阱。 factor 首先将所有内容转换为字符,这有效地将 float 四舍五入到一定位数,从而减少浮点陷阱的问题。

> match(x, sort(unique(x)))
[1] 4 2 3 1 3

关于r - 从 SPSS 到 R 的自动编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983833/

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