请有人告诉我这里的问题是什么?我有数据,其中数字之间有空格。例如,而不是1234.00
,我有1 234.00
。我必须使用R中的" " with ""
函数替换gsub
我写了这个函数:
data(mydata)
fixup.num <- function(x)
as.numeric(gsub(pattern = " ", replacement = "", x, fixed = TRUE))
fixup.num(mydata$safety)
但是在完成之后,我可以看到空格没有被替换,mydata
没有改变。我在哪里做错了?
答案 0 :(得分:0)
destring
包中有一个漂亮的功能taRifx
,可以完全按照您的要求进行操作。当我有一个错误格式化为字符串的数字向量时,我会使用它。
library(taRifx)
x <- c("1 234", "3 456", "9 876")
destring(x)
# [1] 1234 3456 9876
此功能还可以清除其他类型的有问题的数字。
x <- c("1,234", "$84.27", "3 Help I'm stuck in a numeric factory 27")
destring(x)
如果您查看功能定义,则会看到它是通过调用gsub
为其提供的。
function (x, keep = "0-9.-")
{
return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""),
"", x)))
}
如果您不想加载库,则可以直接使用gsub
调用的略微修改版本。只需将x
替换为您想要清理的数据。
as.numeric(gsub(paste("[^", "0-9.-", "]+", sep = ""), "", x))