欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語(yǔ)言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作

 更新時(shí)間:2021年04月17日 12:57:27   作者:亓了個(gè)葩  
這篇文章主要介紹了R語(yǔ)言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

我就廢話不多說(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)文章

最新評(píng)論