Импорт файлов Excel в R, xlsx или xls

Пожалуйста, кто-нибудь может помочь мне в наилучшем способе импорта файла excel 2007 (.xlsx) в R. Я пробовал несколько методов, и ни один из них не работает. Я обновил до 2.13.1, Windows XP, xlsx 0.3.0, я не знаю, почему ошибка продолжает расти. Я пробовал:

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx","DNA_Tag_Numbers")

ИЛИ

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx",1)

но я получаю ошибку:

 Error in .jnew("java/io/FileInputStream", file) : 
  java.io.FileNotFoundException: C:\AB_DNA_Tag_Numbers.xlsx (The system cannot find the file specified)

Спасибо.

Ответ 1

Для решения, которое не содержит проблемных внешних зависимостей *, теперь readxl:

Пакет readxl позволяет легко извлекать данные из Excel и в R. По сравнению со многими из существующих пакетов (например, gdata, xlsx, xlsReadWrite) readxl не имеет внешних зависимостей, поэтому легко устанавливать и использовать во всех операционных системах. Он предназначен для работы с табличные данные, хранящиеся в одном листе.

Readxl поддерживает как устаревший формат .xls, так и современный xml-based.xlsx..xls возможна поддержка библиотеки libxls C, который абстрагирует многие из сложностей базового двоичного кода формат. Чтобы проанализировать .xlsx, мы используем библиотеку RapidXML С++.

Он может быть установлен следующим образом:

install.packages("readxl") # CRAN version

или

devtools::install_github("hadley/readxl") # development version

Использование

library(readxl)

# read_excel reads both xls and xlsx files
read_excel("my-old-spreadsheet.xls")
read_excel("my-new-spreadsheet.xlsx")

# Specify sheet with a number or name
read_excel("my-spreadsheet.xls", sheet = "data")
read_excel("my-spreadsheet.xls", sheet = 2)

# If NAs are represented by something other than blank cells,
# set the na argument
read_excel("my-spreadsheet.xls", na = "NA")

* не строго верно, для этого требуется пакет Rcpp, который, в свою очередь, требует Rtools (для Windows) или Xcode (для OSX), которые являются зависимыми внешними R. Но они не требуют каких-либо попыток с помощью путей и т.д., так что преимущество над Java и Perl-зависимостями.

Обновление Теперь существует пакет rexcel. Это promises для получения форматирования, функций и многих других видов информации Excel из файла Excel и в R.

Ответ 2

Вы также можете попробовать пакет XLConnect. Мне повезло больше, чем xlsx (плюс он также может читать файлы .xls).

library(XLConnect)
theData <- readWorksheet(loadWorkbook("C:/AB_DNA_Tag_Numbers.xlsx"),sheet=1)

также, если у вас возникли проблемы с тем, что ваш файл не найден, попробуйте выбрать его с помощью file.choose().

Ответ 3

Я бы определенно попробовал функцию read.xls в пакете gdata, который значительно более зрелый, чем пакет xlsx. Это может потребовать Perl...

Ответ 4

Update

Поскольку нижеприведенный ответ несколько устарел, я просто обратил внимание на пакет readxl. Если лист Excel хорошо отформатирован/прописан, я бы теперь использовал readxl для чтения из книги. Если листы плохо отформатированы/оставлены, я все равно буду экспортировать в CSV, а затем обработать проблемы в R либо через read.csv(), либо в обычном старом readLines().

Оригинальные

Мой предпочтительный способ - сохранить отдельные листы Excel в файлах с разделителями-запятыми (CSV). В Windows эти файлы связаны с Excel, поэтому вы не теряете функцию "двойного щелчка" в Excel.

Файлы CSV можно считывать в R с помощью read.csv() или, если вы находитесь в определенном месте или используете компьютер, настроенный с некоторыми европейскими настройками (где , используется как десятичное место), используя read.csv2().

Эти функции имеют разумные значения по умолчанию, что упрощает чтение файлов, отформатированных соответствующим образом. Просто сохраняйте метки для выборок или переменных в первой строке или столбце.

Дополнительные преимущества хранения файлов в CSV заключаются в том, что, поскольку файлы представляют собой простой текст, их можно легко передавать, и вы можете быть уверены, что они будут открыты где угодно; для Excel нет необходимости просматривать или редактировать данные.

Ответ 5

Пример 2012:

library("xlsx")
FirstTable <- read.xlsx("MyExcelFile.xlsx", 1 , stringsAsFactors=F)
SecondTable <- read.xlsx("MyExcelFile.xlsx", 2 , stringsAsFactors=F)
  • Я бы попробовал пакет "xlsx", поскольку он прост в обращении и кажется достаточно зрелым.
  • работал отлично для меня и не нуждался в дополнительных дополнениях, таких как Perl или что-то еще

Пример 2015:

library("readxl")
FirstTable  <- read_excel("MyExcelFile.xlsx", 1)
SecondTable <- read_excel("MyExcelFile.xlsx", 2)
  • В настоящее время я использую readxl и хорошо поработал с ним.
  • не требуется лишний материал
  • хорошая производительность

Ответ 7

Если вы столкнулись с той же проблемой, и R дает вам ошибку - не удалось найти функцию ".jnew" - просто установите библиотеку rJava. Или, если у вас есть это, просто запустите библиотеку строк (rJava). Это должно быть проблемой.

Кроме того, всем должно быть ясно, что с csv и txt файлами легче работать, но жизнь не из легких, и иногда вам просто нужно открыть xlsx.

Ответ 8

Недавно я обнаружил функцию Schaun Wheeler для импорта файлов excel в R после того, как понял, что пакет xlxs не был обновлен для R 3.1.0.

https://gist.github.com/schaunwheeler/5825002

В имени файла должно быть расширение ".xlsx", и файл не может быть открыт при запуске функции.

Эта функция действительно полезна для доступа к работе других людей. Основными преимуществами использования функции read.csv являются

  • Импорт нескольких файлов excel
  • Импорт больших файлов
  • Файлы, которые обновляются регулярно

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

Большой реквизит для Schaun для этого решения.

Ответ 9

Для меня пакет openxlx работал самым простым способом.

install.packages("openxlsx")
library(openxlsx)
rawData<-read.xlsx("your.xlsx");

Ответ 10

Какая ваша операционная система? Какую версию R вы используете: 32-разрядную или 64-битную? Какую версию Java вы установили?

У меня была аналогичная ошибка, когда я впервые начал использовать функцию read.xlsx() и обнаружил, что моя проблема (которая может или не может быть связана с вашей, как минимум, этот ответ следует рассматривать как "попробуйте это тоже", ) была связана с несовместимостью .xlsx pacakge с 64-битной Java. Я вполне уверен, что пакет .xlsx требует 32-разрядной Java.

Используйте 32-битное R и убедитесь, что установлена ​​32-разрядная Java. Это может решить вашу проблему.

Ответ 11

Вы проверили, что R действительно может найти файл, например. file.exists( "C:/AB_DNA_Tag_Numbers.xlsx" )? - Ben Bolker 14 авг 2011 в 23:05

Выше комментарий должен решить вашу проблему:

require("xlsx")
read.xlsx("filepath/filename.xlsx",1) 

должен работать после этого.

Ответ 12

Возможно, вы сможете хранить несколько вкладок и больше информации форматирования, если экспортируете в файл таблицы OpenDocument (ods) или более старый формат Excel и импортируете его с помощью ODS reader или читателя Excel, о котором вы говорили выше.

Ответ 13

Как заявлено многими здесь, я пишу то же самое, но с дополнительной точкой!

Сначала нам нужно убедиться, что в нашей R Studio установлены эти два пакета:

  • "readxl"
  • "XLConnect"

Чтобы загрузить пакет в R, вы можете использовать следующую функцию:

install.packages("readxl/XLConnect")
library(XLConnect)
search()

поиск отобразит список текущих пакетов, доступных в вашей R Studio.

Теперь еще один улов, хотя у вас могут быть эти два пакета, но все же вы можете столкнуться с проблемой при чтении файла "xlsx", и ошибка может быть как "ошибка: больше столбцов, чем имя столбца"

Чтобы решить эту проблему, вы можете просто сохранить свой лист excel "xlsx" в

"CSV (с разделителями-запятыми)"

и ваша жизнь будет очень легкой....

Удачи!

Ответ 14

Я очень старался на все ответы выше. Тем не менее, они на самом деле не помогли, потому что я использовал Mac. Библиотека rio имеет эту функцию импорта, которая может в основном импортировать любой файл данных в Rstudio, даже те, которые используют языки, отличные от английского!

Попробуйте коды ниже:

    library(rio)
    AB <- import("C:/AB_DNA_Tag_Numbers.xlsx")
    AB <- AB[,1]

Надеюсь, это поможет. Для более подробной справки: https://cran.r-project.org/web/packages/rio/vignettes/rio.html