【问题标题】:R: dplyr- error in using recode functionR:dplyr-使用重新编码功能时出错
【发布时间】:2017-03-27 20:46:37
【问题描述】:

我是 R 新手,正在尝试将序数变量重新编码为数值。我有一个名为 'Founders_previous_company_employee_count' 的变量,它有 3 个不同的条目作为输入——(“小”、“中”、“大”),我分别将其记录为 1、2、3 个值。 我尝试使用以下代码使用 plyr 包中的重估函数

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

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

我在这里做错了什么?

【问题讨论】:

  • 我希望您使用 factor() 设置级别,然后将 as.numeric() 应用于它

标签: r dplyr


【解决方案1】:
x = c("Small", "Large", "Medium", "Large")
as.numeric(factor(x, levels = c("Small", "Medium", "Large")))
[1] 1 3 2 3

【讨论】:

  • 实际上即使在加载库 dplyr 之后,recode() 也没有出现在环境中
  • 在我的设置中,recode 函数在加载包后可用。
  • @ManikandanR 它回答了你的问题吗?关注stackoverflow.com/help/someone-answers
【解决方案2】:

对于给定的输入

dput(x)

c("Small", "Large", "Medium", "Large")

试试

as.numeric(recode(x, "Small" = "1", "Medium" = "2", "Large" = "3"))

【讨论】:

    【解决方案3】:

    这将更适合作为对 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-11
      • 2014-05-18
      • 2016-07-24
      • 2021-05-31
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多