【问题标题】:R - gdata package read.xls - how to deal with quote marks in original text?R - gdata package read.xls - 如何处理原文中的引号?
【发布时间】:2018-10-05 19:34:36
【问题描述】:

抱歉 - 我对 R 很陌生,所以我希望这不是一个太明显的问题。

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

我最初尝试过:

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

但这无法处理文件中的某些字符串包含引号 (") 来表示英寸的事实。这 a) 导致 V2 中的某些字段合并了原始字符串中的多个字符串,并且 b) 生成“字符串中的 EOF”错误,它只是停止读取。

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

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

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

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

Product GG 7" Tablet 

在原来的Excel文件中变成

"Product GG 7\" Tablet"

在 V2 中。

我如何 a) 避免在 V2 中出现这些反斜杠和 b) 避免在每个字符串周围出现引号?

【问题讨论】:

  • 反斜杠正是 R 呈现它的方式,因此您知道 " 不是字符串的结尾。如果 x 是字符串,请尝试 cat(x) ,您将看到没有反斜杠。

标签: r import gdata


【解决方案1】:

请随意使用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.硬编码两列

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)

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 2018-07-17
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2010-09-12
    • 2021-01-11
    相关资源
    最近更新 更多