我有一个国际格式化数字(即字符串)的文件,包括测量单位。在这种情况下,小数位用“,”表示,1e3分隔符用“。”表示。 (即德国数字格式)。
a <- c('2.200.222 €',
' 180.109,3 €')
或
b <- c('28,42 m²',
'47,70 m²')
我想将这些字符串有效地转换为numeric
。我试图通过像
require(stringr)
str_extract(a, pattern='[0-9]+.[0-9]+.[0-9]+')
str_extract(b, pattern='[0-9]+,[0-9]+')
然而,这似乎太容易出错,我想必须有更标准化的方法。所以这是我的问题:是否有自定义函数,包或其他能够解决这个问题的东西?
非常感谢!
答案 0 :(得分:5)
这是一个使用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
它的工作原理如下: