2016-02-22 63 views
1

我對R有一個編程懷疑,我不知道如何花費數小時查看互聯網上的潛在響應和堆棧溢出後如何解決它。R將一個因子ID變量轉換爲一個數字ID變量

我有一個data.frame的一列,看起來像這樣的一個因素變量:

Columnname 
agsgssg 
agsgssg 
agsgssg 
adgatata 
ahagha 
ahagha 
ahagha 
ahagha 
aghaatah 
ghssghs 
ghssghs 
ghssghs 

因子變量不是直接變形爲數字與as.numeric(as.character()),因爲每個級別都是一個字符串,而不是一個數字。

我需要的是

Columnname   Numericcolumnname 
agsgssg      1 
agsgssg      1 
agsgssg      1 
adgatata      2 
ahagha       3 
ahagha       3 
ahagha       3 
ahagha       3 
aghaatah      4 
ghssghs      5 
ghssghs      5 
ghssghs      5 

我嘗試了好幾種方法,包括使用水平()的因子變量,使用頻率()爲因子變量試圖找出有多少行是每個然後用幾個「for」循環爲該因子的每個級別重複編號,但沒有成功。

我覺得它應該有一個非常簡單的解決方案,我只是沒有搞清楚。

謝謝您的考慮

+0

從示例'DF $ Numericcolumnname < - as.numeric(COLUMNNAME)'' –

+0

匹配(DF $ COLUMNNAME,獨特(DF $ COLUMNNAME))'? –

+1

@PierreLafortune如果關卡的順序不同,您的解決方案將無法工作 – akrun

回答

2

在的情況下,該水平在不同的順序,我們可以將列轉換爲factor指定爲該列中的unique元素levels,然後將其強制到numeric/integer

df1$Numericcolumnname <- as.numeric(factor(df1$Columnname, 
        levels=unique(df1$Columnname))) 
相關問題