当我使用R重新编码数据时,我遇到了问题。
我有一个名为timing_spend
的变量,它是一个数字变量。其中的数据是连续值。我想将它们重新编码为一组作为因子值。
数据样本如下所示:
timng_spend
1
34
2
45
2
8
22
10
28
62
13
16
58
49
25
69
52
71
10
21
1
....etc
我正在使用的R代码如下所示:
group_time=function(timing_spend){
if (timing_spend >= 0 & timing_spend <= 12){
return('0-12 Month')
}else if(timing_spend > 12 & timing_spend <= 24){
return('12-24 Month')
}else if (timing_spend > 24 & timing_spend <= 48){
return('24-48 Month')
}else if (timing_spend > 48 & timing_spend <=60){
return('48-60 Month')
}else if (timing_spend > 60){
return('> 60 Month')
}}
assignment$time_group=sapply(assignment$timing_spend,group_time)
assignment$time_group=as.factor(assignment$time_group)
当我使用str
函数检查数据时,它显示"Factor w/ 5 levels "> 60 Month","0-12 Month",.." as 1, 2, 3
...等等
这不是我想做的事情。我想将">60 Month"
设为"5"
,而不是"1"
。
有没有人可以帮我修改一下?或者这是R的自动机制来解释因子水平变量? This is the plot I want to show, the tenure here was the timing i explained above, I just changed the name of it 正如您所看到的,这里的因素排名是有线的。我想移动&#34;&gt; 60个月&#34;到最右边,这意味着它应该是5,而不是1。
PS:我不在这里提供数据样本,因为我认为我们可能不需要它。
答案 0 :(得分:0)
不要使用通常在R数据管理任务中使用的set detach-on-fork off
,而是学会使用if() {}else{}
或cut
。我没有将它包装在一个新的函数名中,因为已经定义了findInterval
但是如果你想创建一个特定的,狭义定义的函数来执行这个分区,你可以清楚地做到这一点。
cut
如果你这样做,任何图形都应该正确地出现(对你们来说),因为它们会采用因子级别属性的顺序。