Импорт файлов 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
и хорошо поработал с ним.
- не требуется лишний материал
- хорошая производительность
Ответ 6
Этот новый пакет выглядит красивым http://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf
Он не требует rJava и использует "Rcpp" для скорости.
Ответ 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 установлены эти два пакета:
Чтобы загрузить пакет в 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