2014-04-02 30 views
0

我有以下數據並嘗試將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  

通過檢查傑諾和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   

請幫助我..

+0

顯示這些因素,使它們按照它們出現的順序排列(使用'unique'來獲得),然後轉換爲整數。 –

+0

[Convert factor to integer]的可能重複(http://stackoverflow.com/questions/4798343/convert-factor-to-integer) – Aaron

回答

2

在R,因素在內部表示爲整數,鏈接到的表因素水平。據我所知,這些內部整數是基於字典爲了因子水平的分配,所以57可以得到更高的代碼比238

as.integer()將提取該內部整數編碼。正如你發現的那樣,這不是很有用。 (老實說,我不明白爲什麼R在應用as.integer()作爲因子水平的整數因子時會這樣做。)

解決方案:首先轉換爲字符,然後轉換爲整數。 as.integer(as.character(Deno))

+1

另一個選擇是as.numeric(levels(f))[f ]';這是幫助頁面首選的方式,但顯然不太清楚。 – Aaron

+0

當我嘗試as.numeric(as.character(CCG))我收到一條警告消息:通過強制引入NA。 – Vera

+0

@Vera:CCG不能被解釋爲一個整數,在這裏我的解決方案將無法工作。你嘗試過亞倫的嗎? –

相關問題