我一直在尝试将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)避免每个字符串出现引号?
答案 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.使用dplyr
和apply()
对所有字符列执行操作
library(dplyr)
mtcars %>%
select_if(is.character) %>%
apply(2,remove_slash_quote)