R - gdata package read.xls - как бороться с кавычками в оригинальном тексте? - PullRequest
0 голосов
/ 25 апреля 2018

Извинения - я довольно новичок в R, поэтому я надеюсь, что это не слишком очевидный вопрос.

Я пытался прочитать файл Excel в формате xls в R. Я используюФункция read.xls из пакета gdata.

Сначала я попытался:

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

Но это не могло справиться с тем фактом, что некоторые строки в файле содержат кавычки (") для обозначения дюймов. Это а) вызвалонекоторые поля в V2 для включения нескольких строк из оригинала и б) сгенерировал ошибку «EOF внутри строки», когда он просто прекращает чтение.

Итак, я прочитал об этой проблеме и обнаружил, что решение состоит в том, чтобы отключитьцитирование и скопировал формат, предложенный для кого-то, имеющего ту же проблему с базовой функцией read.csv:

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

Это правильно читает все строки и избегает предыдущих проблем. Однако это означает, что каждый не-блочная строка в V2 имеет двойные кавычки вокруг нее - даже там, где ранее в данных не было кавычек.

Она также генерирует символ обратной косой черты в каждой строке, которая содержала дюймовую кавычку в оригиналеНапример:

Product GG 7" Tablet 

в исходном файле Excel становится

"Product GG 7\" Tablet"

В V2.

Как я могу а) избежать этих обратных слешей в V2 и б) избежать кавычек, появляющихся вокруг каждой строки?

1 Ответ

0 голосов
/ 25 апреля 2018

Не стесняйтесь использовать 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)
...