R Language                
            I / O для внешних таблиц (Excel, SAS, SPSS, Stata)
        
        
            
    Поиск…
Импорт данных с помощью rio
 Очень простой способ импортировать данные из многих распространенных форматов файлов - это rio . Этот пакет предоставляет функцию import() которая обертывает многие часто используемые функции импорта данных, обеспечивая тем самым стандартный интерфейс. Он работает просто путем передачи имени файла или URL-адреса для import() : 
import("example.csv")       # comma-separated values
import("example.tsv")       # tab-separated values
import("example.dta")       # Stata
import("example.sav")       # SPSS
import("example.sas7bdat")  # SAS
import("example.xlsx")      # Excel
 import() также может считывать из сжатых каталогов, URL-адресов (HTTP или HTTPS) и в буфер обмена. Полный список всех поддерживаемых форматов файлов доступен в репозитории rio-пакета github . 
 Можно даже указать некоторые дополнительные параметры, относящиеся к определенному файловому формату, который вы пытаетесь прочитать, передавая их непосредственно в функции import() : 
import("example.csv", format = ",") #for csv file where comma is used as separator
import("example.csv", format = ";") #for csv file where semicolon is used as separator
Импорт файлов Excel
Существует несколько пакетов R для чтения файлов excel, каждый из которых использует разные языки или ресурсы, как описано в следующей таблице:
| R пакет | Пользы | 
|---|---|
| XLSX | Джава | 
| XLconnect | Джава | 
| openxlsx | C ++ | 
| readxl | C ++ | 
| RODBC | ODBC | 
| GData | Perl | 
 Для пакетов, использующих Java или ODBC, важно знать подробности о вашей системе, потому что у вас могут быть проблемы с совместимостью в зависимости от вашей версии R и ОС. Например, если вы используете R 64 бита, вы также должны иметь Java 64 бит для использования xlsx или XLconnect . 
 Ниже приведены некоторые примеры чтения файлов excel с каждым пакетом. Обратите внимание, что многие из пакетов имеют одинаковые или очень похожие имена функций. Поэтому полезно указать пакет явно, например, package::function . Пакет openxlsx требует предварительной установки RTools. 
Чтение файлов excel с пакетом xlsx
library(xlsx)
Для импорта требуется индекс или имя листа.
xlsx::read.xlsx("Book1.xlsx", sheetIndex=1)
xlsx::read.xlsx("Book1.xlsx", sheetName="Sheet1")
Чтение файлов Excel с помощью пакета XLconnect
library(XLConnect)
wb <- XLConnect::loadWorkbook("Book1.xlsx")
# Either, if Book1.xlsx has a sheet called "Sheet1":
sheet1 <- XLConnect::readWorksheet(wb, "Sheet1")
# Or, more generally, just get the first sheet in Book1.xlsx:
sheet1 <- XLConnect::readWorksheet(wb, getSheets(wb)[1])
 XLConnect автоматически импортирует предварительно определенные стили ячеек Excel, встроенные в Book1.xlsx . Это полезно, если вы хотите отформатировать объект своей книги и экспортировать полностью отформатированный документ Excel. Во-первых, вам нужно будет создать желаемые форматы ячеек в Book1.xlsx и сохранить их, например, как myHeader , myBody и myPcts . Затем, после загрузки книги в R (см. Выше): 
Headerstyle <- XLConnect::getCellStyle(wb, "myHeader")
Bodystyle <- XLConnect::getCellStyle(wb, "myBody")
Pctsstyle <- XLConnect::getCellStyle(wb, "myPcts")
 Теперь стили ячеек сохраняются в вашей среде R Чтобы назначить стили ячеек определенным диапазонам ваших данных, вам необходимо определить диапазон, а затем назначить стиль: 
Headerrange <- expand.grid(row = 1, col = 1:8)
Bodyrange <- expand.grid(row = 2:6, col = c(1:5, 8))
Pctrange <- expand.grid(row = 2:6, col = c(6, 7))
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Headerrange$row,
             col = Headerrange$col, cellstyle = Headerstyle)
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Bodyrange$row,
             col = Bodyrange$col, cellstyle = Bodystyle)
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Pctrange$row,
             col = Pctrange$col, cellstyle = Pctsstyle)
 Обратите внимание, что XLConnect прост, но в форматировании может стать очень медленным. openxlsx предлагает гораздо более быстрый, но более громоздкий вариант форматирования. 
Чтение файлов excel с пакетом openxlsx
 Файлы Excel можно импортировать с помощью пакета openxlsx 
library(openxlsx)
openxlsx::read.xlsx("spreadsheet1.xlsx", colNames=TRUE, rowNames=TRUE)
#colNames: If TRUE, the first row of data will be used as column names.
#rowNames: If TRUE, first column of data will be used as row names.
 Лист, который следует читать в R, можно выбрать либо путем указания его позиции в аргументе sheet : 
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = 1)
или объявив свое имя:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1")
 Кроме того, openxlsx может определять столбцы дат в считываемом листе. Чтобы обеспечить автоматическое обнаружение дат, аргумент detectDates должен быть установлен в TRUE : 
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1", detectDates= TRUE)
Чтение файлов excel с помощью пакета readxl
 Файлы Excel можно импортировать в виде кадра данных в R используя пакет readxl . 
library(readxl)
 Он может читать файлы .xls и .xlsx . 
readxl::read_excel("spreadsheet1.xls")
readxl::read_excel("spreadsheet2.xlsx")
Лист, который нужно импортировать, может быть указан по номеру или имени.
readxl::read_excel("spreadsheet.xls", sheet = 1)
readxl::read_excel("spreadsheet.xls", sheet = "summary")
 Аргумент col_names = TRUE устанавливает первую строку как имена столбцов. 
 readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE)
 Аргумент col_types может использоваться для указания типов столбцов в данных как вектор. 
readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE,
                   col_types = c("text", "date", "numeric", "numeric"))
Чтение файлов excel с пакетом RODBC
Файлы Excel могут быть прочитаны с использованием драйвера ODBC Excel, который взаимодействует с Windows Database Engine Engine (ACE), ранее JET. С пакетом RODBC R может подключаться к этому драйверу и напрямую запрашивать книги. Предполагается, что рабочие листы поддерживают заголовки столбцов в первой строке с данными в организованных столбцах аналогичных типов. ПРИМЕЧАНИЕ. Этот подход ограничивается только машинами Windows / ПК, поскольку JET / ACE установлены .dll-файлы и недоступны в других операционных системах.
library(RODBC)
xlconn <- odbcDriverConnect('Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
                             DBQ=C:\\Path\\To\\Workbook.xlsx')
df <- sqlQuery(xlconn, "SELECT * FROM [SheetName$]")
close(xlconn)
 В этом подходе к соединению с движком SQL в Excel можно запросить похожие таблицы базы данных, включая операции JOIN и UNION . Синтаксис следует диалекту JET / ACE SQL. ПРИМЕЧАНИЕ. Только операторы DML для доступа к данным, в частности SELECT могут быть запущены на книгах, считаются не обновляемыми запросами. 
joindf <-  sqlQuery(xlconn, "SELECT t1.*, t2.* FROM [Sheet1$] t1
                             INNER JOIN [Sheet2$] t2
                             ON t1.[ID] = t2.[ID]")
uniondf <-  sqlQuery(xlconn, "SELECT * FROM [Sheet1$]
                              UNION  
                              SELECT * FROM [Sheet2$]")
Даже другие книги могут запрашиваться с одного и того же ODBC-канала, указывающего на текущую книгу:
otherwkbkdf <- sqlQuery(xlconn, "SELECT * FROM 
                                 [Excel 12.0 Xml;HDR=Yes;
                                 Database=C:\\Path\\To\\Other\\Workbook.xlsx].[Sheet1$];")
Чтение файлов excel с пакетом gdata
пример здесь
Чтение и запись файлов Stata, SPSS и SAS
 Пакеты foreign and haven могут использоваться для импорта и экспорта файлов из множества других статистических пакетов, таких как Stata, SPSS и SAS и соответствующее программное обеспечение. Существует функция read для каждого из поддерживаемых типов данных для импорта файлов. 
# loading the packages
library(foreign)
library(haven)
library(readstata13)
library(Hmisc)
Некоторые примеры для наиболее распространенных типов данных:
# reading Stata files with `foreign`
read.dta("path\to\your\data")
# reading Stata files with `haven`
read_dta("path\to\your\data")
 foreign пакет может читать файлы stata (.dta) для версий Stata 7-12. Согласно странице разработки, read.dta более или менее заморожен и не будет обновляться для чтения в версиях 13+. Для более поздних версий Stata вы можете использовать пакет readstata13 или haven . Для readstata13 файлы 
# reading recent Stata (13+) files with `readstata13`
read.dta13("path\to\your\data")
Для чтения в файлах SPSS и SAS
# reading SPSS files with `foreign`
read.spss("path\to\your\data.sav", to.data.frame = TRUE)
# reading SPSS files with `haven`
read_spss("path\to\your\data.sav")
read_sav("path\to\your\data.sav")
read_por("path\to\your\data.por")
# reading SAS files with `foreign`
read.ssd("path\to\your\data")
# reading SAS files with `haven`
read_sas("path\to\your\data")
# reading native SAS files with `Hmisc`
sas.get("path\to\your\data")   #requires access to saslib 
# Reading SA XPORT format ( *.XPT ) files
sasxport.get("path\to\your\data.xpt")  # does not require access to SAS executable
 Пакет SAScii предоставляет функции, которые будут принимать код импорта SAS SET и создавать текстовый файл, который может обрабатываться с помощью read.fwf . Он оказался очень надежным для импорта больших публичных наборов данных. Поддержка осуществляется по адресу https://github.com/ajdamico/SAScii 
 Чтобы экспортировать кадры данных в другие статистические пакеты, вы можете использовать функции write.foreign() . Это будет записывать 2 файла, один из которых содержит данные, а другой - инструкции, которые другой пакет должен читать. 
# writing to Stata, SPSS or SAS files with `foreign`
write.foreign(dataframe, datafile, codefile,
              package = c("SPSS", "Stata", "SAS"), ...)
write.foreign(dataframe, "path\to\data\file", "path\to\instruction\file", package = "Stata")
# writing to Stata files with `foreign`
write.dta(dataframe, "file", version = 7L,
          convert.dates = TRUE, tz = "GMT",
          convert.factors = c("labels", "string", "numeric", "codes"))
# writing to Stata files with `haven`
write_dta(dataframe, "path\to\your\data")
# writing to Stata files with `readstata13`
save.dta13(dataframe, file, data.label = NULL, time.stamp = TRUE,
  convert.factors = TRUE, convert.dates = TRUE, tz = "GMT",
  add.rownames = FALSE, compress = FALSE, version = 117,
  convert.underscore = FALSE)
# writing to SPSS files with `haven`
write_sav(dataframe, "path\to\your\data")
 Файл, хранящийся в SPSS, также может быть прочитан с помощью read.spss таким образом: 
 foreign::read.spss('data.sav', to.data.frame=TRUE, use.value.labels=FALSE, 
                     use.missings=TRUE, reencode='UTF-8')
# to.data.frame if TRUE: return a data frame
# use.value.labels if TRUE: convert variables with value labels into R factors with those levels
# use.missings if TRUE: information on user-defined missing values will used to set the corresponding values to NA.
# reencode character strings will be re-encoded to the current locale. The default, NA, means to do so in a UTF-8 locale, only.
Импорт или экспорт файла пера
Перо представляет собой реализацию Apache Arrow, предназначенную для хранения кадров данных в агностическом языке, сохраняя при этом метаданные (например, классы дат), увеличивая взаимодействие между Python и R. Чтение перьевого файла приведет к получению, а не стандарту data.frame.
library(feather)
path <- "filename.feather"
df <- mtcars
write_feather(df, path)
df2 <- read_feather(path)
head(df2)
##  A tibble: 6 x 11
##     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  21.0     6   160   110  3.90 2.620 16.46     0     1     4     4
## 2  21.0     6   160   110  3.90 2.875 17.02     0     1     4     4
## 3  22.8     4   108    93  3.85 2.320 18.61     1     1     4     1
## 4  21.4     6   258   110  3.08 3.215 19.44     1     0     3     1
## 5  18.7     8   360   175  3.15 3.440 17.02     0     0     3     2
## 6  18.1     6   225   105  2.76 3.460 20.22     1     0     3     1
head(df)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
В текущей документации содержится следующее предупреждение:
Примечание для пользователей: перо следует рассматривать как альфа-программное обеспечение. В частности, формат файла, скорее всего, будет развиваться в течение следующего года. Не используйте перо для длительного хранения данных.