你好 我的表df是:
Nr.of.members COD_PAY_CRM cls1 cls2
1 342 TZ S8
2 1 IT S3 S4
3 4 CL S0 S0
4 1 AS
5 6 UA S4 S8
6 100 OM S11 S9
...
cls1和cls2的因子变量的级别分别为S0 S1,S2,.. S10,S11 SX和“”(空)。
当我使用函数 cast 或 table 创建cls1〜cls2频率表时,显示的字母顺序为:“” S0 S1 S10 S11 S2 S3。 .. 我尝试用以下代码制作频率表之前对其重新排序:
levels(df$cls1)=as.factor(c("S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "SX", ""))
它会更改显示或列名,但不会更改值,例如在我刚开始的时候
cls1 V1 S0 S1 S10 S11 S2
1 684895 21 848 6956 11493 64647
2 S0 0 25987 269 3 120 9152
3 S1 0 545 5575 190 235 20561
4 S10 0 31 303 3522 1487 6312
5 S11 0 81 140 1763 157984 42024
6 S2 0 14690 12791 6674 51303 593072
#V1 is the level "" that have been remane automatically by R
当我更改级别时,结果是:
cls1 S0 S1 S2 S3 S4 S5
1 S0 684895 21 848 6956 11493 64647
2 S1 0 25987 269 3 120 9152
3 S2 0 545 5575 190 235 20561
4 S3 0 31 303 3522 1487 6312
5 S4 0 81 140 1763 157984 42024
6 S5 0 14690 12791 6674 51303 593072
如您所见,它仅更改变量名的值显示。 我如何重新排序因子变量以更改显示?
提前谢谢您的帮助。
答案 0 :(得分:0)
您只是在上面的方法中覆盖了您的级别。请在下面尝试。它应该保留您的实际数据并根据需要重新排列级别。
df$cls1=factor(df$cls1,levels=c("S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "SX", ""))
我还建议您探索forcats
软件包。在因素及其水平方面,它具有很多功能。