R語言中千分位分隔符數值(美式數值)讀取

2021-10-08 15:11:20 字數 1619 閱讀 9606

對於英美數值資料,千分位分隔符(逗號分割)很常見,如下面乙份房地產銷售資料,land.squre.feet, gross.square.feet兩列資料。

雖然在excel裡面,千分位分隔符數值和普通數值沒什麼區別,也可以通知設定單元格格式進行轉化,但是在r中卻有大的區別,即千分位分隔符並不是數值,不能直接做數值計算。

>mean(land.squre.feet)

[1] na

warning message:

in mean.default(land.squre.feet) : 引數不是數值也不是邏輯值:回覆na

直接使用as.numeric函式將land.squre.feet轉華為r可以識別的數值也不行

>mean(as.numeric(bk$land.squre.feet))

[1] nan

使用gsub()函式,gsub()可以用於欄位的刪減、增補、替換和切割,可以處理乙個欄位也可以處理由欄位組成的向量。

具體的使用方法為:gsub(「目標字元」, 「替換字元」, 物件)

在gsub函式中,任何字段處理都由將「替換字元」替換到「目標字元」這一流程中實現,令替換字元為』』』'可實現刪除,令替換字元為"目標字元+增補內容"可實現增補,替換和切割也是使用類似的操作。

例如:

> text <

-"abcdefgh . ijkl mnm"

>

gsub

("efg"

,"aaa"

, text) # 將efg改為aaa,區分大小寫[1

]"abcdaaah . ijkl mnm"

在這裡也就是要將千分位分隔符「,」去掉,可以使用下列語句:

>land.sqft <

--as

.numeric

(gsub

(",",""

,land.square.feet)

) # 將「,」去除

其結果如下:

>head(bk.homes[,c(「land.square.feet」,「land.sqft」)])

land.square.feet land.sqft

26 2,058 2058

27 4,833 4833

28 2,417 2417

29 3,867 3867

31 2,707 2707

32 2,417 2417

以上語句對於具有貨幣符合的數值(如$203,001)處理要分兩步,先去掉逗號,再去掉$,更一般的是使用以下語句可以一次完成,

land.sqft = as.numeric(gsub("[^[:digit:]]","",land.square.feet)) #[^[:digit:]]表示非數字字元

關於gsub函式的使用,可以參見這篇文章:

r語言-gsub替換字元工具:

js演算法實現千分位分隔符

var str 123456789 9,8,7,6,5,4,3,2,1 function formatcash str console.log formatcash str 複製 另外一種優化演算法,因為字串在 js 每次變化都會重新開闢記憶體,所有轉化為陣列會更加便捷 function f str...

給數字新增千分位分隔符

法一 int i 0,j 0 void recombination char a,long long n if n 10 0 include intmain recombination a,n for k j k 0 k printf c a k return0 注意 此程式可在educoder中實...

保留小數且增加千分位分隔符

value.tofixed 2 tostring indexof 1 value.tofixed 2 tostring replace d d g,0,1 1 value.tofixed 2 tostring replace d d g,0,1 1 tofixed 方法可把 number 四捨五入為...