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

1. 千分位分割數值

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

2. R不能自動識別千分位分割數值

雖然在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

3. R中識別千分位分割數值的方法

使用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替換字符工具:https://blog.csdn.net/lztttao/article/details/82086346

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章