Изменить уровни факторной переменной - PullRequest
0 голосов
/ 05 февраля 2019

Здравствуйте, Моя таблица 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 и "" (пусто)).

Когда я создаю таблицы частоты cls1 ~ cls2 с функцией cast или table , дисплей отображается в алфавитном порядке: "" S0 S1 S10 S11S2 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

Как вы можете видеть, это не изменило отображение значения, только имя моих переменных.Как я могу изменить порядок моих факторных переменных, чтобы изменить отображение?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 05 февраля 2019

Вы просто переписываете свои уровни в своем подходе выше.Попробуйте это ниже.Он должен поддерживать ваши фактические данные и переупорядочивать уровни по своему желанию.

df$cls1=factor(df$cls1,levels=c("S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "SX", ""))

Я также рекомендовал бы изучить пакет forcats.Он имеет множество функций для работы в отношении факторов и их уровней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...