将因子更改为整数而不更改数据的顺序

时间:2014-04-02 12:34:24

标签: r

我有以下数据并尝试将CCG和Pract更改为数字,因此我可以使用stan或Winbugs ...当我尝试更改它时,它似乎改变了数据的顺序.. 我想在不改变数据顺序的情况下将CCG和Pract更改为数字...我努力但我无法做到。 我正在努力解决这个基本问题而不是编写错误代码....请帮助..

我有以下数据

  CCG  pract  Deno Numer Points  Excep 
1 01C N81049   49    46      4       4           
2 01C N81022   28    26      4      23          
3 01C N81632   66    64      4       4          
4 01C N81069   15    14      4       3           
5 01C N81062   98    89      4       9          
6 01C N81033   31    28      4       9          

我尝试使用as.integer()更改为整数,我正在接受...

  CCG pract Deno Numer Points Excep
1  20  6621  160   144    41    36       
2  20  6594  130   117    41    18       
3  20  6698  179   164    41    36       
4  20  6640   57    46    41    25       
5  20  6633  214   191    41    62       
6  20  6605  137   119    41    62       

通过检查Deno和Numer,很明显数据的顺序已经改变了......为什么CCG不是从1开始?

我想要

   CCG  pract  Deno Numer   Points Excep 
1 01C N81049   49    46      4         4           
2 01C N81022   28    26      4        23          
3 01C N81632   66    64      4         4          
4 01C N81069   15    14      4         3           
5 01C N81062   98    89      4         9          
6 01C N81033   31    28      4         9          

改为这样的

  CCG  pract     Deno Numer    Points Excep 
1    1    1      49    46        4       4           
2    1    1      28    26        4      23          
3    1    1      66    64        4       4          
4    1    1      15    14        4       3          
5    1    1      98    89        4       9          
6    1    1      31    28        4       9          

请帮帮我..

1 个答案:

答案 0 :(得分:2)

在R中,因子在内部表示为整数,链接到因子水平表。 AFAIK,这些内部整数是根据因子级别的词典顺序分配的,因此57得到的代码高于238。

as.integer()将提取此内部整数编码。如你所知,这不是很有用。 (老实说,我不明白为什么R在将as.integer()应用于具有整数作为因子水平的因子时会这样做。)

解决方案:首先转换为字符,然后转换为整数。 as.integer(as.character(Deno))

相关问题