R - gdata包read.xls - 如何处理原始文本中的引号?

时间:2018-04-25 10:47:02

标签: r import gdata

道歉 - 我对R来说还是个新手,所以我希望这不是一个明显的问题。

我一直在尝试将xls格式的Excel文件读入R.我正在使用gdata包中的read.xls函数。

我最初尝试过:

V2 <- read.xls("file.xls",header=TRUE)

但这无法解决文件中的某些字符串包含引号(&#34;)来表示英寸的事实。这a)导致V2中的一些字段包含来自原始的多个字符串,以及b)在字符串中生成一个&#34; EOF&#34;它只是停止阅读的错误。

所以我读到了这个问题并发现解决方案是禁用引用,并复制了一个为基本read.csv函数具有相同问题的人建议的格式:

V2 <- read.xls("file.xls",sep=",",quote="",row.names=NULL)

这会正确读取所有行并避免以前的问题。但是,这意味着V2中的每个非空字符串都有围绕它的双引号 - 即使数据中以前没有引号也是如此。

它仍然在每个字符串中生成一个反斜杠字符,原始字母中包含一个英寸引号,例如:

Product GG 7" Tablet 
原始Excel文件中的

变为

"Product GG 7\" Tablet"

在V2。

我怎样才能避免V2中出现这些反斜杠,b)避免每个字符串出现引号?

1 个答案:

答案 0 :(得分:0)

随意使用gsub()删除\“,如下所示。

如果有一列有问题。

1.以mtcars为例

mtcars <- mtcars

2.Hardcode mpg列有\“

mtcars$mpg <- "Product GG 7\" Tablet"

3.使用gsub()删除\“此列

mtcars$mpg <- gsub(pattern = "\"",replacement = "",x = mtcars$mpg) 

mtcars$mpg

如果有多个列存在问题。

1.以mtcars为例

mtcars <- mtcars

2.Hardcode两列

mtcars$mpg <- "Product GG 7\" Tablet"
mtcars$cyl <- "6\" Tablet"

3.创建执行删除的功能。

remove_slash_quote <- function(data) {
  data <- gsub(pattern = "\"",replacement = "",x = data) 
}

4.使用dplyrapply()对所有字符列执行操作

library(dplyr)

mtcars %>% 
  select_if(is.character) %>% 
apply(2,remove_slash_quote)