我有一个国际格式化数字(即字符串)的文件,包括测量单位.在这种情况下,小数位用","表示,1e3分隔符用"."表示.(即德国数字格式).
a <- c('2.200.222 €',
' 180.109,3 €')
Run Code Online (Sandbox Code Playgroud)
要么
b <- c('28,42 m²',
'47,70 m²')
Run Code Online (Sandbox Code Playgroud)
我想有效地将这些字符串转换为numeric.我试图用代码过滤掉数字
require(stringr)
str_extract(a, pattern='[0-9]+.[0-9]+.[0-9]+')
str_extract(b, pattern='[0-9]+,[0-9]+')
Run Code Online (Sandbox Code Playgroud)
然而,这似乎太容易出错,我想必须有一种更标准化的方式.所以这是我的问题:是否有自定义函数,包或其他能够解决这个问题的东西?
非常感谢你!
这是一个gsub用于处理您发布的样本数据的函数:
x <- c('2.200.222 €', ' 180.109,3 €', '28,42 m²', '47,70 m²')
strip <- function(x){
z <- gsub("[^0-9,.]", "", x)
z <- gsub("\\.", "", z)
gsub(",", ".", z)
}
as.numeric(strip(x))
[1] 2200222.00 180109.30 28.42 47.70
Run Code Online (Sandbox Code Playgroud)
它的工作原理如下:
| 归档时间: |
|
| 查看次数: |
794 次 |
| 最近记录: |