R語言-如何將科學計數法表示的數字轉化為文本

統賽B組我們選擇瞭圖書館課題,獲得瞭數據,一時興起嘗試處理瞭一下門禁的數據,遇到瞭一些問題,特此記下,方便以後查閱。

門禁數據分為兩個變量,第一列為學號,第二列為進門時間,原本是Excel文件,為瞭方便讀入R我把它另存為瞭csv文件,但在讀入R以後出現瞭一些問題

1、學號被存儲為瞭科學計數法表示的數字

2、時間顯示的也不全面,有些亂碼

時間問題可以在Excel中把單元格格式設置一下就解決瞭,但是學號問題卻遇到瞭一些小麻煩,我本來是想用

menjin$studentcode <- as.character(menjin$studentcode)

來解決,但是卻。。。。沒有任何反應,情急之下我google瞭一下,終於找到瞭結決方法,

menjin$studentcode <- format(menjin$studentcode,digits = 14)

解決瞭這一問題

以下是format()函數具體的用法:

format(x, digits, nsmall, width)

digits, nsmall, and width are all optional: nsmall suggests how many decimal places to use;digits suggests how many significant digits to include; and width suggests how long the total character string should be.

補充:將科學計數法轉化為常規格式再轉化為字符串類型(String)

問題描述:

在向Datagrid(也包括datacell,和前端使用的框架有關)中導入數據的時候遇到瞭一個這樣的問題:當excel中的【單元格格式】設置為【數值】類型時,導入到datagrid中的數據發生瞭變化,如下圖:

要導入的數據:

導入後的結果:

分新原因:

經過調試發現,當excel中的【單元格格式】設置為【數值】類型時,java後臺獲取到的是使用科學計數法表示的,如下圖所示:

這時還是沒有問題的,但是結果為什麼出錯呢,是因為類型轉化的問題,這裡不能使用String.valueOf( ) 方法進行轉換。

解決問題:

使用數字類型格式化類 DecimalFormat順利地解決瞭這個問題,如下方法:

    value=new DecimalFormat().format(cell.getNumericCellValue());//這裡得到的是用“,”隔開的數字串
    value = value.replace(",", "");

結果如下:

為瞭方便設置數字格式,這裡簡單總結瞭 DecimalFormat順的構造方法,如下:

DecimalFormat下的方法不再一一展示,有需要的可以查詢一下。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。