對於英美數值資料,千分位分隔符(逗號分割)很常見,如下面乙份房地產銷售資料,land.squre.feet, gross.square.feet兩列資料。
雖然在excel裡面,千分位分隔符數值和普通數值沒什麼區別,也可以通知設定單元格格式進行轉化,但是在r中卻有大的區別,即千分位分隔符並不是數值,不能直接做數值計算。
>mean(land.squre.feet)直接使用as.numeric函式將land.squre.feet轉華為r可以識別的數值也不行[1] na
warning message:
in mean.default(land.squre.feet) : 引數不是數值也不是邏輯值:回覆na
>mean(as.numeric(bk$land.squre.feet))使用gsub()函式,gsub()可以用於欄位的刪減、增補、替換和切割,可以處理乙個欄位也可以處理由欄位組成的向量。[1] nan
具體的使用方法為: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」)])以上語句對於具有貨幣符合的數值(如$203,001)處理要分兩步,先去掉逗號,再去掉$,更一般的是使用以下語句可以一次完成,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
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 四捨五入為...