溫馨提示×

溫馨提示×

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

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

怎么在R語言中為數(shù)值取消科學(xué)計數(shù)法

發(fā)布時間:2021-04-17 15:31:01 來源:億速云 閱讀:3776 作者:Leah 欄目:開發(fā)技術(shù)

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

>#取消科學(xué)計數(shù)法
>options(scipen = 200)
>#scipen 表示在200個數(shù)字以內(nèi)都不使用科學(xué)計數(shù)法

補充:R語言去除科學(xué)計數(shù)法 保留小數(shù)位

R語言 去除科學(xué)計數(shù)法 保留小數(shù)位

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

補充:R語言科學(xué)計數(shù)法數(shù)據(jù)改變/丟失/失準(zhǔn),取消科學(xué)計數(shù)法的原因和解決方法

問題描述

如何在R中取消科學(xué)計數(shù)法 &

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

需求背景

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

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

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

所以,我需要先取消科學(xué)計數(shù)法的表示,然后再轉(zhuǎn)成字符串格式。

取消科學(xué)計數(shù)法的方法一

在讀取或處理數(shù)據(jù)前使用options函數(shù)

#取消科學(xué)計數(shù)法
options(scipen = 200)
#scipen 表示在200位數(shù)字以內(nèi)都不使用科學(xué)計數(shù)法

取消科學(xué)計數(shù)法的方法二

在讀取或處理數(shù)據(jù)時使用format函數(shù)

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

后續(xù)的bug

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

>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”

原因

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

解決方法

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

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

以上就是怎么在R語言中為數(shù)值取消科學(xué)計數(shù)法,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI