从R中的列中的值中删除<u + 00a0>

时间:2016-12-12 20:01:57

标签: r encoding utf-8

当我使用read.csv读取我的csv文件并使用encoding参数时,我会在其中获得一些值。

application <- read.csv("application.csv", na.strings = c("N/A","","NA"), encoding = "UTF-8")

数据集看起来像

           X                                      Y
Met<U+00A0>Expectations               Met<U+00A0>Expectations
Met<U+00A0>Expectations               Met<U+00A0>Expectations
        NA                            Met<U+00A0>Expectations  
Met<U+00A0>Expectations               Exceeded Expectations
Did<U+00A0>Not Meet Expectations      Met<U+00A0>Expectations
Unacceptable                          Exceeded Expectations

如何从这些值中删除?如果我不使用“encoding”参数,当我在闪亮的应用程序中显示这些值时,它被视为:

Met<a0>Expectations and Did<a0>Not Meet Expectations

我不清楚如何处理这个问题。

PS:我已经用所面临问题的例子修改了原始问题。

3 个答案:

答案 0 :(得分:0)

两个选项:

application <- read.csv("application.csv", na.strings = c("N/A","","NA"), encoding = "ASCII")

{readr}

application <- read_csv("application.csv", na.strings = c("N/A","","NA"), locale = locale(encoding = "ASCII"))

将UTF-8转换为ASCII将删除打印的UTF-8语法,但空格将保留。请注意,如果字符串的开头或结尾有多余的空格,您可能会获得不需要的唯一值。例如,转换为ASCII的"Met Expectations<U+00A0>"将读取"Met Expectations ",其不等于"Met Expectations"

答案 1 :(得分:0)

问题困扰我很长一段时间,我在R社区周围搜索,“r”标签中的答案都不适用于我的情况。在我扩展搜索区域之前,我在“java”标签中得到了有效的答案。 好的,对于数据框,解决方案是:

application <- as.data.frame(lapply(application, function(x) {
              gsub("\u00A0", "", x) 
         })) 

答案 2 :(得分:0)

这不是一个很好的答案,但要将你的csv恢复为UTF-8,你可以在谷歌表中打开它然后下载为.csv。然后使用trim_ws = T导入。这将解决导入问题,不会产生任何怪异。