整理资料中的符号(£)

时间:2018-10-23 13:47:08

标签: r

因此,我看到了一些类似的问题,但是那里的解决方案似乎不起作用,所以我认为我做错了什么或者我没有完全相同的问题。

我正在使用dbReadTable从SQL Server下载数据进行分析。数据具有一个变量,该变量可以在字符串中具有货币符号,例如£。该变量可以具有9个可能的值之一,其中£符号在字符串的各个位置出现0、1或2次(由于数据敏感性,我在这里无法共享选项),但是一个示例可以是...

"[text]£[text]£[text]"

在SQL数据库上,它们正确显示并具有类varchar。一旦下载为data.frame,变量的类为character。但是,£符号现在要么显示为“ ”(当查看data.frame时),要么显示为(检查观察值时)。我尝试使用gsubstri_replace_all_fixed替换变量中的“ ”值,但似乎找不到任何要替换的值。下面是一些代码,显示了我的工作。

con1 <- dbConnect(odbc(), dsn = dsn1, Database = dbase1)
cube1 <- dbReadTable(con1, table1)

cube1$variable <- stri_replace_all_fixed(cube1$variable, "<U+00A3>", "")
cube1$variable <- gsub("^.+<U\\+\\w+>.+$", "", cube1$variable)

最后两行都没有做任何事情,我仍然停留在“ ”或?值上(取决于您如何看待变量的值)。作为测试,我确实检查了在控制台中输入£符号是否显示,并且它们确实...

> x = c("£2")
> x
[1] "£2"

我正在寻找使£符号正确显示或将其从变量中删除的方法(或两种方法的解决方案)。

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是在gsub调用中不要使用fixed=TRUE来使Regex混乱

test_string <- "< U+00A3>25"

gsub('< U+00A3>','£',test_string,fixed=TRUE)

[1] "£25"