R語(yǔ)言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
>#取消科學(xué)計(jì)數(shù)法 >options(scipen = 200) >#scipen 表示在200個(gè)數(shù)字以內(nèi)都不使用科學(xué)計(jì)數(shù)法
補(bǔ)充:R語(yǔ)言去除科學(xué)計(jì)數(shù)法 保留小數(shù)位
R語(yǔ)言 去除科學(xué)計(jì)數(shù)法 保留小數(shù)位
options(“scipen”=100, “digits”=4)
補(bǔ)充:R語(yǔ)言科學(xué)計(jì)數(shù)法數(shù)據(jù)改變/丟失/失準(zhǔn),取消科學(xué)計(jì)數(shù)法的原因和解決方法
問(wèn)題描述
如何在R中取消科學(xué)計(jì)數(shù)法 &
對(duì)R中使用科學(xué)技術(shù)法表示的數(shù)據(jù)“取消科學(xué)計(jì)數(shù)法”以后,得到的值和原來(lái)的值會(huì)不一樣。
需求背景
分析留存數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)底表的字段是一個(gè)30位/兩百位的字符串,比如0011111100000000000001,第一個(gè)0表示最近一天該用戶沒(méi)登陸,第三位的1表示3天前該用戶登陸了,以此類推
底表的格式是字符串,但我下載格式是csv,csv自動(dòng)把這個(gè)字段的格式改成數(shù)值型了(我也不知道為啥),所以我用R讀取這個(gè)文件時(shí),“0011111100000000000001“就變成了”11111100000000000001“,我需要在前面補(bǔ)0補(bǔ)滿30位
然而,補(bǔ)0的函數(shù)要求輸入的格式是字符串,但我直接把原始數(shù)據(jù)轉(zhuǎn)成字符串格式的話會(huì)發(fā)生下面這樣尷尬的情況,比如原始數(shù)據(jù)是“11111111111111111111111111111111111”,那么R就會(huì)顯示1.11+e30,然后轉(zhuǎn)成character 類型以后就直接變成“1.11+e30”,補(bǔ)0以后就會(huì)是“000001.1111e+30”(類似這樣,反正就是還有小數(shù)點(diǎn)和e等字樣)
所以,我需要先取消科學(xué)計(jì)數(shù)法的表示,然后再轉(zhuǎn)成字符串格式。
取消科學(xué)計(jì)數(shù)法的方法一
在讀取或處理數(shù)據(jù)前使用options函數(shù)
#取消科學(xué)計(jì)數(shù)法 options(scipen = 200) #scipen 表示在200位數(shù)字以內(nèi)都不使用科學(xué)計(jì)數(shù)法
取消科學(xué)計(jì)數(shù)法的方法二
在讀取或處理數(shù)據(jù)時(shí)使用format函數(shù)
#取消科學(xué)計(jì)數(shù)法 format(data, scientific=F) # data即處理的數(shù)據(jù)字段
后續(xù)的bug
用上面的方法一或者二以后,確實(shí)不是科學(xué)計(jì)數(shù)法了,可得到的值和原來(lái)的值會(huì)不一樣,如:
>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”
原因
對(duì)于很大的數(shù)(比如10^20量級(jí)),R的儲(chǔ)存不會(huì)保留全部精度,而是保留部分精度(比如前15位),忽略剩余精度(比如后5位)
解決方法
(1)最好就是從源頭解決問(wèn)題,一開(kāi)始拉取數(shù)據(jù)的時(shí)候就拉成文本格式,不要是數(shù)值格式,比如從SQL數(shù)據(jù)庫(kù)里拉原始數(shù)據(jù)的時(shí)候就用SQL指令把那行很大的數(shù)改成文本格式。
(2)用其他軟件如excel的導(dǎo)入數(shù)據(jù)功能,把原本數(shù)值格式的數(shù)據(jù)在導(dǎo)入時(shí)就改成文本格式,保存以后,再用R讀寫(xiě)新文件
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語(yǔ)言 實(shí)現(xiàn)將數(shù)據(jù)框中的字符類型數(shù)字轉(zhuǎn)換為數(shù)值
這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)將數(shù)據(jù)框中的字符類型數(shù)字轉(zhuǎn)換為數(shù)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03R語(yǔ)言 實(shí)現(xiàn)list類型數(shù)據(jù)轉(zhuǎn)換
這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)list類型數(shù)據(jù)轉(zhuǎn)換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03R語(yǔ)言求一行(列表、list)數(shù)據(jù)的平均數(shù)操作
這篇文章主要介紹了R語(yǔ)言求一行(列表、list)數(shù)據(jù)的平均數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03R語(yǔ)言關(guān)于生存分析知識(shí)點(diǎn)總結(jié)
在本篇文章里,小編給大家整理的是一篇關(guān)于R語(yǔ)言生存分析的相關(guān)知識(shí)點(diǎn)及實(shí)例內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下吧。2021-05-05大數(shù)據(jù)分析R語(yǔ)言RStudio使用超詳細(xì)教程
RStudio是用于R編程的開(kāi)源工具,這篇文章主要介紹了大數(shù)據(jù)分析R語(yǔ)言RStudio使用教程和一些RStudio的重要技巧,竅門(mén)和快捷方式,可快速將您變成RStudio高級(jí)用戶,感興趣的朋友跟隨小編一起看看吧2021-03-03R語(yǔ)言常量知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于R語(yǔ)言常量知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)分享下。2021-03-03