R中千分位分隔符数值(美式数值)读取
1. 千分位分割數(shù)值
對(duì)于英美數(shù)值數(shù)據(jù),千分位分隔符(逗號(hào)分割)很常見,如下面一份房地產(chǎn)銷售數(shù)據(jù),land.squre.feet, gross.square.feet兩列數(shù)據(jù)。
2. R不能自動(dòng)識(shí)別千分位分割數(shù)值
雖然在Excel里面,千分位分隔符數(shù)值和普通數(shù)值沒什么區(qū)別,也可以通知設(shè)置單元格格式進(jìn)行轉(zhuǎn)化,但是在R中卻有大的區(qū)別,即千分位分隔符并不是數(shù)值,不能直接做數(shù)值計(jì)算。
> mean(land.squre.feet)[1] NAWarning message:In mean.default(land.squre.feet) : 參數(shù)不是數(shù)值也不是邏輯值:回覆NA直接使用as.numeric函數(shù)將land.squre.feet轉(zhuǎn)華為R可以識(shí)別的數(shù)值也不行> mean(as.numeric(bk$land.squre.feet))[1] NaN3. R中識(shí)別千分位分割數(shù)值的方法
使用gsub()函數(shù),gsub()可以用于字段的刪減、增補(bǔ)、替換和切割,可以處理一個(gè)字段也可以處理由字段組成的向量。
具體的使用方法為:gsub("目標(biāo)字符", "替換字符", 對(duì)象)
在gsub函數(shù)中,任何字段處理都由將“替換字符”替換到“目標(biāo)字符”這一流程中實(shí)現(xiàn),令替換字符為''''可實(shí)現(xiàn)刪除,令替換字符為"目標(biāo)字符+增補(bǔ)內(nèi)容"可實(shí)現(xiàn)增補(bǔ),替換和切割也是使用類似的操作。
例如:
> text <- "AbcdEfgh . Ijkl MNM"
> gsub("Efg", "AAA", text)???? #? 將Efg改為AAA,區(qū)分大小寫
[1] "AbcdAAAh . Ijkl MNM"
在這里也就是要將千分位分隔符“,”去掉,可以使用下列語句:
>land.sqft <-- as.numeric(gsub(",","",land.square.feet)) # 將“,”去除
其結(jié)果如下:
> 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
以上語句對(duì)于具有貨幣符合的數(shù)值(如$203,001)處理要分兩步,先去掉逗號(hào),再去掉$,更一般的是使用以下語句可以一次完成,
>land.sqft <-- as.numeric(gsub("[^[:digit:]]","",land.square.feet))? #[^[:digit:]]表示非數(shù)字字符
關(guān)于gsub函數(shù)的使用,可以參見這篇文章:
R語言-gsub替換字符工具:https://blog.csdn.net/lztttao/article/details/82086346
總結(jié)
以上是生活随笔為你收集整理的R中千分位分隔符数值(美式数值)读取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 整理书包教案一等奖
- 下一篇: 向seaborn传递matplotlib