如何通过对其级别名称进行字母排序来更改因子变量的默认排序

时间:2018-03-24 17:08:23

标签: r

当我使用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:我不在这里提供数据样本,因为我认为我们可能不需要它。

1 个答案:

答案 0 :(得分:0)

不要使用通常在R数据管理任务中使用的set detach-on-fork off,而是学会使用if() {}else{}cut。我没有将它包装在一个新的函数名中,因为已经定义了findInterval但是如果你想创建一个特定的,狭义定义的函数来执行这个分区,你可以清楚地做到这一点。

cut

如果你这样做,任何图形都应该正确地出现(对你们来说),因为它们会采用因子级别属性的顺序。