【发布时间】:2021-11-07 20:26:51
【问题描述】:
我正在尝试重新编码一些用于在 R 中评分的心理测量量表。 量表通常以因子的形式出现,需要将其转换为数字来计算分数;例如(“从不”= 0,“有时”= 1,“总是”= 2)。
我在获得特定数字方面的成功有限。如果刻度从 1 开始(例如“从不”= 1、“有时”= 2、“总是”= 3),那么一切似乎都正常,但是如果刻度从 0(或 1 以外的其他数字)开始,转换为数字并没有按预期进行。我找到了一个临时解决方案,但它相当麻烦,因为我需要先转换为因子,然后转换为字符,最后转换为数字。
我想要做的是让 R 为因子的每个特定级别分配一个数字,然后在转换为数字时返回该数字。例如,如果我想要 "Never" = 0、"Sometimes" = 1 和 "Always" = 2,那么 R 会返回:
> answers <- c("Never", "Sometimes", "Always", "Always", "Sometimes", "Never")
> some_function(answers)
[1] 0 1 2 2 1 0
我的临时和不太理想的解决方案是执行以下操作:
> as.numeric(as.character(fct_recode(as_factor(answers),
+ "0" = "Never",
+ "1" = "Sometimes",
+ "2" = "Always")))
[1] 0 1 2 2 1 0
如果我尝试在不转换为字符的情况下运行上述代码,那么它不会返回我所追求的:
> as.numeric(fct_recode(as_factor(answers),
+ "0" = "Never",
+ "1" = "Sometimes",
+ "2" = "Always"))
[1] 1 2 3 3 2 1
有谁知道如何更有效地转换因子变量数值并将特定数值分配给因子的水平?
谢谢!
【问题讨论】:
标签: r type-conversion recode