Статьи

Как импортировать данные и экспортировать результаты в R

Импорт и экспорт данных с помощью R

Благодаря увлечению «большими» данными аналитические инструменты приобрели популярность. Одним из таких инструментов является язык программирования R. В этой статье я покажу, как извлекать данные из текстовых файлов, файлов CSV и баз данных. Затем я покажу, как отправить эти данные на веб-сервер.

Вы можете быть удивлены, нужно ли мне заново изучать новый язык? Ответ — нет! Все, что вам нужно знать, это несколько команд.

Программисты из разных областей, которые работают над веб-приложениями на разных языках программирования, могут импортировать данные в R и после обработки экспортировать их в требуемом формате.

Примечание: если вы не знакомы с R, я рекомендую статью SitePoint о том, как установить R и RStudio . Он предоставляет основные команды на R и общее введение в язык. В этом посте рассматриваются команды, которые могут выполняться на терминале R без использования IDtu RStudio. Тем не менее, обработка больших наборов данных в терминале может оказаться сложной задачей для начинающих, поэтому я бы предложил использовать RStudio для расширенного опыта. В RStudio вы можете запускать те же команды в окне консоли.

Обработка текстовых файлов

Текстовый файл, присутствующий на вашем локальном компьютере, может быть прочитан с помощью слегка измененной команды read.table . Поскольку он предназначен для чтения таблиц, вы можете установить разделитель на пустую строку («»), чтобы читать текстовый файл построчно:

 file_contents = read.table("<path_to_file>", sep = "") 

Примечание. <path_to_file> , где вы видите угловые скобки, такие как <path_to_file> , вставьте нужный номер, идентификатор и т. Д. Без скобок.

Путь к файлу также может быть относительным путем к файлу. Если ваши строки имеют неодинаковую длину, вы также должны установить fill = TRUE . Результатом этой команды является фрейм данных в R.

Если ваш файл слишком велик, чтобы его можно было прочитать за один раз, попробуйте прочитать его пошагово, используя параметры skip и nrow . Например, чтобы прочитать строки 6–10 в вашем файле, выполните следующие команды:

 connection <- file("<path_to_file>") lines6_10 = read.table(connection, skip=5, nrow=5) # 6-10 lines 

Обработка файлов CSV

Файл CSV (значения, разделенные запятыми) — это файл, который буквально содержит значения, разделенные запятыми. Вы можете прочитать файл CSV, используя команду read.csv :

 file_contents = read.csv("<path_to_file>") 

Параметр header указывает, содержит ли файл CSV заголовки столбцов. По умолчанию установлено значение TRUE . (Это также может быть указано при чтении текстовых файлов.) В случае, если у вас есть неравные столбцы в разных строках, вам также нужно установить значение fill в TRUE .

Для больших файлов вы можете пропустить строки аналогичным образом:

 connection <- file("<path_to_file>") lines6_10 = read.csv(connection, skip=5, nrow=5) # 6-10 lines 

Использование баз данных MySQL

Для подключения к базе данных вам нужна отдельная библиотека RMySQL . Его можно установить с помощью следующей команды:

 install.packages('RMySQL') 

После установки необходимо активировать его, выполнив следующее:

 library('RMySQL') 

Предполагая, что ваша база данных работает, теперь вы можете выполнять запросы MySQL после установления соединения:

 con <- dbConnect(MySQL(), user="root", password="root", dbname="nsso", host="localhost", port=8889) 

Если вы используете MySQL через MAMP на Mac, вам нужно указать unix.socket :

 con <- dbConnect(..., unix.socket = "/Applications/MAMP/tmp/mysql/mysql.sock") 

Чтобы сделать запрос MySQL, вам сначала нужно выполнить запрос, а затем сохранить данные во фрейме данных:

 rs <- dbSendQuery(con, "SELECT * FROM my_table;") # Make sure you run a LIMIT if your query is too large data <- fetch(rs, n = -1) 

Как только вы закончите с вашими запросами, вы можете отключить соединение с помощью команды dbDisconnect :

 dbDisconnect(con) 

Читать данные в Интернете

Что если ваш источник данных находится в сети? Как вы читаете онлайн файлы? В R это можно сделать, просто изменив путь к файлу, который вы указали в команде чтения. Вам нужно использовать команду url и указать URL в команде read.csv . Например:

 file_contents = read.csv(url("<file_URL>")) 

Для базы данных host может быть изменен для извлечения данных из базы данных на веб-сервере.

Экспорт данных

Как и read.csv и read.table , фрейм данных можно экспортировать в текстовый или CSV-файл с помощью команд write :

 write.csv(data_frame, file = "data.csv") 

Чтобы экспортировать как текстовый файл, используя другой разделитель (скажем, вкладку), вы можете использовать команду write.table :

 write.table(data_frame, file = "data.txt", sep = "\t") 

Обновление баз данных также просто и может быть выполнено с помощью команд UPDATE и INSERT MySQL.

Экспорт графиков

После того как вы обработали и нанесли на график свои данные в R, вы также можете экспортировать их! Команда png или jpeg сделает это за вас. В основном, это сохраняет сюжет, который в данный момент активен:

 # Initiate Image png(filename="sample.png") # Make a plot plot(c(1,2,3,4,5), c(4,5,6,7,8)) # Save the plot dev.off() 

В идеале, вы можете настроить вторую команду, чтобы сохранить необходимый график.

Экспорт данных в Интернет

Загрузка файлов в Интернет напрямую может быть сложной задачей, но вы можете экспортировать данные в Интернет, выполнив два действия: сохранить файл локально, а затем загрузить его в Интернет. Вы можете загрузить файл в Интернет с помощью запроса POST через R, который можно эмулировать с httr пакета httr :

 POST("<upload_URL>", body = list(name="<path_to_local_file>", filedata = upload_file(filename, "text/csv"))) 

Для более подробной информации, вот краткое руководство по пакету httr .

Вывод

В последние годы R приобрел большую популярность среди людей, работающих со статистикой, и сейчас хорошее время для изучения этого замечательного языка. Он достаточно гибок для синхронизации с различными типами источников данных, и работа с R также очень проста, независимо от вашего опыта. Будем надеяться, что этот пост поможет вам начать с R!