Импорт файлов Excel в R, xlsx или xls - PullRequest
82 голосов
/ 13 августа 2011

Пожалуйста, кто-нибудь может мне помочь с лучшим способом импортировать файл 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")

OR

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)

Спасибо.

Ответы [ 14 ]

94 голосов
/ 19 марта 2015

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

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

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

Может быть установлен так:

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 . Это обещает получить форматирование Excel, функции и многие другие виды информации из файла Excel и в R.

35 голосов
/ 10 апреля 2012

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

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

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

22 голосов
/ 15 августа 2011

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

20 голосов
/ 13 августа 2011

Обновление

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

Оригинал

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

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

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

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

18 голосов
/ 25 сентября 2012

Пример 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 ихороший опыт работы с ним.
  • никаких дополнительных материалов не требуется
  • хорошая производительность
14 голосов
/ 22 апреля 2014

Этот новый пакет выглядит хорошо http://cran.r -project.org / web / packages / openxlsx / openxlsx.pdf Он не требует rJava и использует 'Rcpp' для скорости.

5 голосов
/ 09 апреля 2012

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

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

4 голосов
/ 26 июня 2015

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

install.packages("openxlsx")
library(openxlsx)
rawData<-read.xlsx("your.xlsx");
4 голосов
/ 28 мая 2014

Я недавно обнаружил функцию Шона Уилера для импорта файлов Excel в R после того, как понял, что пакет xlxs не был обновлен для R 3.1.0.

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

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

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

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

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

Большие опоры Шона для этого решения.

2 голосов
/ 07 января 2015

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

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

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

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

...