您好,登錄后才能下訂單哦!
本篇文章為大家展示了使用R語言怎么實現因子型數值轉數值型操作,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
因子(factor)轉換成數值型(numeric)的規則是這樣的:
一共有n個數,那么轉換后的數字就會在1——n中取值,數字最小的取一,次小的取二,以此類推。
那么如何讓因子(factor)類型里的數值轉換對應的數值型呢?
mean(as.numeric(as.character(factorname))) mean(as.numeric(levels(factorname)[factorname]))
以上代碼都可以實現將因子(factor)類型里的數值轉換對應的數值型,思路都是先轉換成字符型然后再轉換成數值型。
補充:R_as.numeric()函數在轉換小數時返回無意義結果的解決
本文重點解決as.numeric()函數將factor轉為數值時得出的無意義結果的解決
x | y | value ------------------------------------------ a1 b2 0.510665432157769 a2 b3 0.887655678543227 .. .. ...
運行as.numeric(aaa[1,3]),返回的結果居然是123?當然,這只是個栗子,為了表達問題所在。真正運行時不一定得到的結果是123
在R help中找到如下參考
Warning
If x is a factor, as.numeric will return the underlying numeric (integer) representation, which is often meaningless as it may not correspond to the factor levels, see the ‘Warning' section in factor (and the 2nd example below).
看到meaningless這個詞了嗎,意思是如果使用as.numeric轉換一個因子,則通常會返回一個無意義的結果,是因子的一個“整型數字象征”,因為R為了節省內存提高速度,因子類型底層是用C語言中的int實現的,因子的值與該整型數值的“轉換表格”存儲在內存中。
嵌套使用
as.numeric(as.character(aaa[1,3]))
這樣返回的就是正常應轉化的數值,而不是一個無意義的結果如一百二十三。
但上面的方法有一個問題,在小數點后位數太大時輸出結果會四舍五入。
對于這個,我們可以使用print()函數中的參數digit,print(as.numeric(as.character(aaa[1,3])),digits = 16),輸出的就是不帶四舍五入的完整值
理論上format(xx, digits = 16)也可以保證長度,但我沒在這種情況下試。
上述內容就是使用R語言怎么實現因子型數值轉數值型操作,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。