Многие пакеты в R взаимодействуют с Microsoft Excel.
Для начала установим и загрузим пакет readxl
.
Рассмотрим 2 функции в этом пакете:
excel_sheets
read_excel
Пропишем один раз путь к файлу для удобства:
У функции excel_sheets() на вход идёт один аргумент: путь к файлу. Если файл находится в директории, то его название.
\[ excel\_sheets("data.xlsx"") \]
Данная функция показывает нам какие листы есть в нашем excel файле. Это очень удобно: поонять структуру excel файла.
## Error: `path` does not exist: '/home/ahmedushka/GitHub/R/docs/scripts/semester_2_data_analysis/sem_2/exchange_rate.xlsx'
У этой функции есть 1 обязательный аргумент: путь к файлу. Посмотрим, что сделает функция, когда у нас имеется 2 листа.
\[ data <- read\_excel("data.xlsx", sheet = "my\_sheet") \]
## Error: `path` does not exist: '/home/ahmedushka/GitHub/R/docs/scripts/semester_2_data_analysis/sem_2/exchange_rate.xlsx'
## Error in head(data_1): объект 'data_1' не найден
Как мы видим данная функция импортировала нам только 1-ый лист. Чтобы подгрузить какой-то другой лист используем необязательный аргумент sheet.
## Error: `path` does not exist: '/home/ahmedushka/GitHub/R/docs/scripts/semester_2_data_analysis/sem_2/exchange_rate.xlsx'
## Error in head(data_2): объект 'data_2' не найден
## Error: `path` does not exist: '/home/ahmedushka/GitHub/R/docs/scripts/semester_2_data_analysis/sem_2/exchange_rate.xlsx'
## Error in head(data_2): объект 'data_2' не найден
Чтобы удобно хранить все листы в одном месте, можно использовать функцию list
:
## Error in eval(expr, envir, enclos): объект 'data_1' не найден
## function (..., list = character(), package = NULL, lib.loc = NULL, verbose = getOption("verbose"),
## envir = .GlobalEnv, overwrite = TRUE)
Представьте, что у вас есть файл, в котором 10 листов. Писать 10 строчек с подгрузкой каждого листа это нудно. Но у нас есть функция lapply
!
## Error: `path` does not exist: '/home/ahmedushka/GitHub/R/docs/scripts/semester_2_data_analysis/sem_2/exchange_rate.xlsx'
## function (..., list = character(), package = NULL, lib.loc = NULL, verbose = getOption("verbose"),
## envir = .GlobalEnv, overwrite = TRUE)
На самом деле у функции read_excel
есть и другие аргументы:
\[ data <- read\_excel("data.xlsx", sheet = "my\_sheet", col_names = TRUE, col_types = NULL, skip = 0) \]
col_names
- есть ли названия столбцов в excel файле (попробовать поставить FALSE
) или можно сразу их задавать col_names = c('Name', 'Population')
.col_types
- можем вручную задавать тип переменных в столбце(например: col_types('text', 'text')
.skip
- пропускает какое-то количество строк. Если используем, то нужно указать название столбцов или FALSE
.Для начала подгрузим пакет:
Схемка как это работает через read.csv()
Файл с расширением *.xls — это формат всех файлов версии Excel 2003 и раньше. Он имеет меньше возможностей, работает медленнее.
Файл с расширением *.xlsx — это формат подавляющего большинства файлов Excel на настоящий момент, используется начиная с версии Microsoft Office 2007.
## Error in xls2sep(xls, sheet, verbose = verbose, ..., method = method, : Intermediate file '/var/folders/yg/vflc3lc17m7d29qfq34cj8vr0000gn/T//Rtmp6f3Ksr/file4ee4939a4cf.csv' missing!
## Error in file.exists(tfn): неправильный аргумент 'file'
Работает через read.csv , следовательно параметры такие же как и там:
data <- read.xls(path, sheet = 2,
skip = 50, header = FALSE, stringsAsFactors = FALSE,
col.names = c('Date', 'USD/RUB'))
## Error in xls2sep(xls, sheet, verbose = verbose, ..., method = method, : Intermediate file '/var/folders/yg/vflc3lc17m7d29qfq34cj8vr0000gn/T//Rtmp6f3Ksr/file4ee3d46cf90.csv' missing!
## Error in file.exists(tfn): неправильный аргумент 'file'
Особенности пакета:
Чтобы пользоваться возможностями данного пакета, нужно уставновить Java.
Установим пакет:
Эта функция создаёт “мост” между файлом Excel и R.
Импортирует определенный лист
Краткая инструкция:
Предположим у нас есть новые данные. Пусть пока будет cars.
Создаем лист в нашем файле Excel:
Заполняет наш лист.
Сохраняет наши изменения:
Меняет название листов в Excel:
Есть много пакетов для работы с базами данных:
RMySQL
RPostgresSQL
ROracle
Эти пакеты – это реализации. Нужен так же пакет DBI
, который будет являться “интерфейсом”. Если установить пакет RMySQL
, то установится и пакет DBI
.
В первую очередь нужно подключиться к базе данных, то есть создать соединение с ней. Давайте подключимся к учебной базе данных, которую предоставляет Datacamp.
con <- dbConnect(RMySQL::MySQL(), # тип базы данных
dbname = "company",
host = "courses.csrrinzqubik.us-east-1.rds.amazonaws.com",
port = 3306,
user = "student",
password = "datacamp")
con
Прежде чем работать с таблицами, давайте посмотрим какие доступны нам.
А теперь прочитаем табличку employees
.
Можно также создавать и удалять таблички. Или изменять текущие, но мы сейчас говорим об импорте.
Хорошим тоном является закрытие соединения с базой данных.
Подгружать такую маленькую табличку очень удобно, но что если у нас миллионы наблюдений? Нам скорее не нужна вся табличка, а нужна какая-то часть. Можно выгрузить часть информации с помощью запросов.
Допустим, мы хотим получить имена работников, которые начали работать после первого сентября 2012 года. Сделаем соответсвующий запрос.
Попробуем еще один запрос.
Также имеются функции dbSendQuery()
,dbFetch()
и dbClearResult()
. С помощью которых можно извлекать данные кусками.
Для загрузки файлов STATA (файлы с расширением .dta) потребуется библиотека foreign
.
Теперь загрузим dta-файл.
data.table
- функция fread
еще быстрее пакета readr
.haven
- читает файлы приложений SPSS, Stata и SAS.DBI
- позволяет взаимодействовать с базами данных.jsonlite
- для работы с форматом JSON.xml
- для работы с форматом XML.rio
- для работы с огромным типом файлов.