我是R的新手并尝试将有序变量重新编码为数值。我有一个名为'Founders_previous_company_employee_count'的变量,有3个不同的条目作为输入 - (“小”,“中”,“大”),我将它分别记录到1,2,3值。 我尝试使用以下代码
从plyr包中使用revalue函数startupfull$employee_count_code<-as.numeric(revalue(startupfull$Founders_previous_company_employee_count,c("Small"=1, "Medium"=2, "Large"=3)))
工作正常。 但是,我尝试在dplyr包中使用recode函数,我收到错误消息。
代码:
startupfull$prevcomp_empcount_code <- as.numeric(recode(startupfull$Founders_previous_company_employee_count,c("Small"=1, "Medium"=2, "Large"=3)))
错误 - 错误:所有替换都必须命名为
我在这里做错了什么?
答案 0 :(得分:2)
这可能更适合作为对Aramis7d上述答案的评论,但我没有足够的声誉来发表评论。
如果有人在阅读完这些答案之后仍然感到困惑(就像我一样),忽略了重新编码为数字的事实可能最好使用joel.wilson建议的as.numeric()和factor(),一般解决方案如果重新编码为非数字值,只需避免在使用dplyr的recode()时在c()中包装重新编码对,那么这也会有效。
即代替:
startupfull$prevcomp_empcount_code <-
as.numeric(recode(startupfull$Founders_previous_company_employee_count,
c("Small"=1, "Medium"=2, "Large"=3)))
只需这样做:
startupfull$prevcomp_empcount_code <-
as.numeric(recode(startupfull$Founders_previous_company_employee_count,
"Small"=1, "Medium"=2, "Large"=3))
答案 1 :(得分:1)
对于给定的输入
dput(x)
c("Small", "Large", "Medium", "Large")
尝试
as.numeric(recode(x, "Small" = "1", "Medium" = "2", "Large" = "3"))
答案 2 :(得分:0)
x = c("Small", "Large", "Medium", "Large")
as.numeric(factor(x, levels = c("Small", "Medium", "Large")))
[1] 1 3 2 3