【发布时间】:2011-06-23 03:29:23
【问题描述】:
我想从字符串中删除所有不是数字、减号或小数点的字符。
我使用read.xls 从 Excel 导入数据,其中包含一些奇怪的字符。我需要将这些转换为数字。我对正则表达式不太熟悉,因此需要一种更简单的方法来执行以下操作:
excel_coords <- c(" 19.53380ݰ", " 20.02591°", "-155.91059°", "-155.8154°")
unwanted <- unique(unlist(strsplit(gsub("[0-9]|\\.|-", "", excel_coords), "")))
clean_coords <- gsub(do.call("paste", args = c(as.list(unwanted), sep="|")),
replacement = "", x = excel_coords)
> clean_coords
[1] "19.53380" "20.02591" "-155.91059" "-155.8154"
如果有人能告诉我为什么这些字符会出现在我的某些数据中(度数符号是原始 Excel 工作表的一部分,但其他不是),那就太好了。
【问题讨论】:
-
为什么你不能在加载数据之前做一个简单的查找和替换?如果数据在 excel 中,请尝试强制数据为小数。此外,您似乎已经找到了一个同样有效的解决方案。
-
@blunders:这似乎是一个如此简单的任务,我希望它已经存在于正则表达式中,所以这是一个学习问题。而且,我把它提供给需要它在带有度数符号的 Excel 工作表上工作的人(这会强制单元格为文本而不是数字)。
-
Y 和 A 作为编码伪影存在,UTF8 文本未正确编码到另一个代码页。
-
今天在 r-help 上回答了一个类似的问题。见r.789695.n4.nabble.com/…
-
r-help 上的答案适用于此处,并适当更改正则表达式:
"[^-.0-9]"而不是"\\D"和"[-.0-9]+"而不是"\\d+"