【问题标题】:How to recode a variable into another variable如何将一个变量重新编码为另一个变量
【发布时间】:2017-01-08 09:06:27
【问题描述】:

我正在尝试重新编码以下变量:

str(dades$Edat)
 num [1:30000] 24 26 34 37 57 37 29 23 28 35 ...

进入这个:

agrupar.edat<-function(x){
  for (i in 1:length(x)){
    if (x[i]>=21 & x[i]<30) {x[i]<-'1'} else
      if (x[i]>=30 & x[i]<40) {x[i]<-'2'} else
        if (x[i]>=40 & x[i]<50) {x[i]<-'3'} else
          if (x[i]>=50 & x[i]<60) {x[i]<-'4'} else
            if (x[i]>=60 & x[i]<70) {x[i]<-'5'} else
        if (x[i]>=70 & x[i]<80) {x[i]<-'6'} 
  }

所以我可以把结果放在这里:

edx<-agrupar.edat(dades$Edat)

但有些东西不工作,edx 不断返回“NULL”

【问题讨论】:

  • 只需使用?cut 即可,即cut(dates$Edat, breaks = c(-Inf, -21, 30, 40, 50, 60, 80, Inf), labels = 1:6)

标签: r recode


【解决方案1】:

问题 1.

您的函数没有 return 参数。

因此,它是这样读取的:

agrupar.edat<-function(x){
  # do stuff
  # good bye
  }

...逻辑上说得通,没有任何结果 (NULL)。

尝试在末尾添加return(1),就在右括号之前,魔法就会发生。

但是请注意,您的问题不需要需要函数。它需要……

问题 2。

... 使用cut,正如@akrun 的评论所指示的那样。

【讨论】:

  • 你的意思是return(x)
  • 不,我的意思是return(1),来解释这个概念。不让 OP 将此问题设置为函数 :)
猜你喜欢
  • 1970-01-01
  • 2022-11-15
  • 2020-11-13
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 2018-07-18
  • 2021-10-12
  • 1970-01-01
相关资源
最近更新 更多