R:dplyr-使用重新编码功能时出错

时间:2016-11-14 08:56:20

标签: r dplyr

我是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)))
  

错误 - 错误:所有替换都必须命名为

我在这里做错了什么?

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