1. 千分位分割數值
對於英美數值數據,千分位分隔符(逗號分割)很常見,如下面一份房地產銷售數據,land.squre.feet, gross.square.feet兩列數據。
2. R不能自動識別千分位分割數值
雖然在Excel裏面,千分位分隔符數值和普通數值沒什麼區別,也可以通知設置單元格格式進行轉化,但是在R中卻有大的區別,即千分位分隔符並不是數值,不能直接做數值計算。
In mean.default(land.squre.feet) : 參數不是數值也不是邏輯值:回覆NA
直接使用as.numeric函數將land.squre.feet轉華爲R可以識別的數值也不行
> mean(as.numeric(bk$land.squre.feet))
3. R中識別千分位分割數值的方法
使用gsub()函數,gsub()可以用於字段的刪減、增補、替換和切割,可以處理一個字段也可以處理由字段組成的向量。
具體的使用方法爲:gsub("目標字符", "替換字符", 對象)
在gsub函數中,任何字段處理都由將“替換字符”替換到“目標字符”這一流程中實現,令替換字符爲''''可實現刪除,令替換字符爲"目標字符+增補內容"可實現增補,替換和切割也是使用類似的操作。
> text <- "AbcdEfgh . Ijkl MNM"
> gsub("Efg", "AAA", text) # 將Efg改爲AAA,區分大小寫
在這裏也就是要將千分位分隔符“,”去掉,可以使用下列語句:
>land.sqft <-- as.numeric(gsub(",","",land.square.feet)) # 將“,”去除
> head(bk.homes[,c("land.square.feet","land.sqft")])
以上語句對於具有貨幣符合的數值(如$203,001)處理要分兩步,先去掉逗號,再去掉$,更一般的是使用以下語句可以一次完成,
>land.sqft <-- as.numeric(gsub("[^[:digit:]]","",land.square.feet)) #[^[:digit:]]表示非數字字符
R語言-gsub替換字符工具:https://blog.csdn.net/lztttao/article/details/82086346