溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在R語言中為數值取消科學計數法

發布時間:2021-04-17 15:31:01 來源:億速云 閱讀:3828 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關怎么在R語言中為數值取消科學計數法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

>#取消科學計數法
>options(scipen = 200)
>#scipen 表示在200個數字以內都不使用科學計數法

補充:R語言去除科學計數法 保留小數位

R語言 去除科學計數法 保留小數位

options(“scipen”=100, “digits”=4)

補充:R語言科學計數法數據改變/丟失/失準,取消科學計數法的原因和解決方法

問題描述

如何在R中取消科學計數法 &

對R中使用科學技術法表示的數據“取消科學計數法”以后,得到的值和原來的值會不一樣。

需求背景

分析留存數據時,數據庫底表的字段是一個30位/兩百位的字符串,比如0011111100000000000001,第一個0表示最近一天該用戶沒登陸,第三位的1表示3天前該用戶登陸了,以此類推

底表的格式是字符串,但我下載格式是csv,csv自動把這個字段的格式改成數值型了(我也不知道為啥),所以我用R讀取這個文件時,“0011111100000000000001“就變成了”11111100000000000001“,我需要在前面補0補滿30位

然而,補0的函數要求輸入的格式是字符串,但我直接把原始數據轉成字符串格式的話會發生下面這樣尷尬的情況,比如原始數據是“11111111111111111111111111111111111”,那么R就會顯示1.11+e30,然后轉成character 類型以后就直接變成“1.11+e30”,補0以后就會是“000001.1111e+30”(類似這樣,反正就是還有小數點和e等字樣)

所以,我需要先取消科學計數法的表示,然后再轉成字符串格式。

取消科學計數法的方法一

在讀取或處理數據前使用options函數

#取消科學計數法
options(scipen = 200)
#scipen 表示在200位數字以內都不使用科學計數法

取消科學計數法的方法二

在讀取或處理數據時使用format函數

#取消科學計數法
format(data, scientific=F)
# data即處理的數據字段

后續的bug

用上面的方法一或者二以后,確實不是科學計數法了,可得到的值和原來的值會不一樣,如:

>a <-123456789987654321123456
>a
[1] 1.234568e+23
>format(a,scientific=F)
[1] “123456789987654325240268”
>format(a,scientific=F,digits=14)
[1] “123456789987654325240268”
>format(a,scientific=F,digits=7)
[1] “123456789987654325240268”

原因

對于很大的數(比如10^20量級),R的儲存不會保留全部精度,而是保留部分精度(比如前15位),忽略剩余精度(比如后5位)

解決方法

(1)最好就是從源頭解決問題,一開始拉取數據的時候就拉成文本格式,不要是數值格式,比如從SQL數據庫里拉原始數據的時候就用SQL指令把那行很大的數改成文本格式。

(2)用其他軟件如excel的導入數據功能,把原本數值格式的數據在導入時就改成文本格式,保存以后,再用R讀寫新文件

以上就是怎么在R語言中為數值取消科學計數法,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女