Как да експортирате данни от R в CSV и Excel

⚡ Умно обобщение

Експортирането на данни от R обхваща записването на рамка от данни в CSV, Excel, SPSS, SAS, STATA и нативен R формат, след което изпращането на същия файл към Google Drive or DropboxВсеки експорт следва един шаблон: функция, рамка от данни и път на местоназначение.

  • 📁 Дестинация първа: getwd() докладва работната директория и всяко относително име на файл се записва там, освен ако не е предоставен пълен път.
  • 📄 Експортиране в CSV файл: write.csv(df, „file.csv“) е универсалната опция, а write.csv2() превключва на разделители точка и запетая.
  • 📗 Експорт в Excel: write.xlsx() от пакета xlsx изисква работещ Java монтаж на машината.
  • 🔄 Статистически софтуер: Пакетът haven записва SPSS, SAS и STATA файлове с помощта на write_sav(), write_sas() и write_dta().
  • 💾 Нативни формати: saveRDS() съхранява един обект, а save() съхранява няколко, като и двата запазват точно нивата на фактори и атрибутите.
  • ☁️ Качване в облака: googledrive и rdrop2 се удостоверяват веднъж на сесия, след което качват, изтеглят и изтриват файлове директно от R.

Експортиране на данни от R CSV в Excel

Как да експортирате данни от R

В този урок ще научим как да експортираме данни от R среда в различни формати.

За да експортирате данни на твърдия диск, имате нужда от пътя на файла и разширение. На първо място, пътят е мястото, където ще се съхраняват данните. В този урок ще видите как да съхранявате данни на:

  • Твърдият диск
  • Google Drive
  • Dropbox

Второ, R може да записва данните в много формати. Този урок обхваща основните файлови разширения:

  • CSV
  • XLSX
  • RDS
  • SAS
  • SPSS
  • STATA

Всеки експорт следва една и съща форма: едно извикване на функция, рамка от данни и път на местоназначение.

Експортиране на твърд диск

Като начало можете да запишете данните директно в работната директория. Следният код отпечатва пътя на вашата работна директория:

directory <- getwd()
directory

Изход:

## [1] "/Users/15_Export_to_do"

Освен ако не предоставите пълен път, всеки файл се записва в тази работна директория. Стойността по подразбиране се различава в зависимост от системата, обикновено това е домашната папка на потребителя на macOS и Linux и папката „Документи“ на Windows, но getwd() винаги ви казва текущата стойност. Променете я със setwd() или просто предоставете пълен път към функцията write.

setwd("/Users/USERNAME/Downloads")

Създайте рамка с данни

Първо, изградете малък набор от данни: средната стойност на разхода на гориво (mpg) и разхода (disp), групирани по предавка от набора от данни на mtcars.

library(dplyr)
df <-mtcars %>%
    select(mpg, disp, gear) %>%
    group_by(gear) %>%
    summarize(mean_mpg = mean(mpg), mean_disp = mean(disp))
df

Изход:

## # A tibble: 3 x 3
##	gear mean_mpg mean_disp
##	<dbl>	<dbl>	<dbl>
## 1	3 16.10667  326.3000
## 2 	4 24.53333  123.0167
## 3	5 21.38000  202.4800

Таблицата съдържа три реда и три колони. Можете да създадете CSV файл с функцията write.csv в R.

Как да експортирате DataFrame в CSV файл в R

Основният синтаксис на write.csv в R за експортиране на DataFrame в CSV в R:

write.csv(df, path)
arguments
-df: Dataset to save. Need to be the same name of the data frame in the environment.
-path: A string. Set the destination path. Path + filename + extension i.e. "/Users/USERNAME/Downloads/mydata.csv" or the filename + extension if the folder is the same as the working directory

Пример:

write.csv(df, "table_car.csv")

Code Обяснение

  • write.csv(df, “table_car.csv”): Създайте CSV файл на твърдия диск:
    • df: име на рамката с данни в средата
    • “table_car.csv”: Наименувайте файла table_car и го запазете като csv

Забележкаwrite.csv2() записва същия файл, използвайки точка и запетая като разделител на полетата и запетая като десетична запетая, което е конвенцията в голяма част от континентална Европа.

write.csv2(df, "table_car.csv")

ЗабележкаСамо за образователни цели създадохме функция, наречена open_folder(), за да отворим папката на директорията вместо вас. Просто трябва да изпълните кода по-долу и да видите къде се съхранява CSV файлът. Трябва да видите файл с име table_car.csv.

# Run this code to create the function
open_folder <-function(dir){
	if (.Platform['OS.type'] == "windows"){
	shell.exec(dir)  
	} else {
	system(paste(Sys.getenv("R_BROWSER"), dir))
  }
}
# Call the function to open the folder
open_folder(directory)

Как да експортирате DataFrame в Excel файл в R

Експортирането в Excel е лесно на Windows и малко по-сложно macOSИ двата използват xlsx библиотеката, като разликата е само в инсталацията, защото xlsx зависи от Java. Java трябва да е налично в машината, преди пакетът да се зареди.

Windows Потребители

On Windows, инсталирайте библиотеката директно с conda:

conda install -c r r-xlsx

След като библиотеката е инсталирана, write.xlsx() създава нова работна книга на Excel в работната директория:

library(xlsx)
write.xlsx(df, "table_car.xlsx")

Ако сте потребител на Mac OS, трябва да изпълните следните стъпки:

  • Стъпка 1: Инсталирайте най-новата версия на Java
  • Стъпка 2: Инсталирайте библиотека rJava
  • Стъпка 3: Инсталирайте библиотека xlsx

Стъпка 1) Можете да изтеглите Java от официален Oracle сайт и го инсталирайте.

Можете да се върнете в Rstudio и да проверите коя версия на Java е инсталиран.

system("java -version")

Всякакви скорошни Java release работи. Ако командата не отчете нищо, Java не е инсталиран и xlsx пакетът няма да се зареди.

Стъпка 2) Трябва да инсталирате java в R. Препоръчваме ви да инсталирате R и Rstudio с Anaconda. Anaconda управлява зависимостите между библиотеките. В този смисъл Anaconda ще се справи с тънкостите на rJava инсталация.

Първо, трябва да актуализирате conda и след това да инсталирате библиотека. Можете да копирате и поставите следващите два реда код в терминала.

conda update conda
conda install -c r r-rjava

След това отворете java в Rstudio

library(rJava)

Стъпка 3) Най-накрая е време да инсталирате xlsx. Още веднъж можете да използвате Conda да го направя:

conda install -c r r-xlsx

Точно както потребителите на Windows, можете да запазвате данни с функцията write.xlsx()

library(xlsx)

Изход:

## Loading required package: xlsxjars
write.xlsx(df, "table_car.xlsx")

Експортиране на данни от R към различен софтуер

Експортирането на данни към различен софтуер е толкова просто, колкото импортирането им. „Убежището“ на библиотеката предоставя удобен начин за експортиране на данни

  • spss
  • SAS
  • Stata

Първо, импортирайте библиотеката. Ако нямате „убежище“, можете да отидете тук за да я инсталирате.

library(haven)

SPSS файл

По-долу е кодът за експортиране на данните в софтуер SPSS:

write_sav(df, "table_car.sav")

SAS файл

Също толкова просто, колкото spss, можете да експортирате в sas

write_sas(df, "table_car.sas7bdat")

STATA файл

И накрая, библиотеката убежище позволява писане на .dta файл.

write_dta(df, "table_car.dta")

Как да експортирате данни в R Native формати

Ако искате да запазите обекта в R, вместо да го предадете на друга програма, използвайте един от двата оригинални формата. save() записва един или повече именувани обекти във файл .RData:

save(df, file ='table_car.RData')

Алтернативата е saveRDS(), която съхранява точно един обект и позволява на четеца да избере името му при връщане назад:

# One object, name chosen at read time
saveRDS(df, file = "table_car.rds")
my_data <- readRDS("table_car.rds")

# Several objects, original names restored
save(df, directory, file = "workspace.RData")
load("workspace.RData")
Критерии запазване на RDS() / четене на RDS() запазване() / зареждане()
Обекти на файл Точно един Един или много
Име на обекта при презареждане Ти го избираш Възстановено като запазено
Презаписва средата Не Да, тихо
Обичайно разширение .rds .RData

Предпочитайте saveRDS() в скриптове, защото load() може тихо да презапише съществуващ обект със същото име. И двата формата запазват нивата на фактори, подредбата и атрибутите непокътнати, което CSV не може да направи.

Можете да проверите създадените по-горе файлове в настоящата работна директория

Експортиране на данни от R към STATA файл

Взаимодействайте с облачните услуги

И накрая, но не на последно място, R е оборудван с фантастични библиотеки за взаимодействие с облачните изчислителни услуги. Последната част на този урок се занимава с експортиране/импортиране на файлове от:

  • Google Drive
  • Dropbox

ЗабележкаТази част от урока предполага, че имате акаунт в Google намлява Dropbox. Ако не, можете бързо да създадете такъв за – Google Drive: https://accounts.google.com/SignUp?hl=en - Dropbox: https://www.dropbox.com/h

Google Drive

Трябва да инсталирате библиотеката googledrive за достъп до функцията, позволяваща взаимодействие с Google Drive.

Библиотеката все още не е достъпна в Anaconda. Можете да го инсталирате с кода по-долу в конзолата.

install.packages("googledrive")

и отваряте библиотеката.

library(googledrive)

За потребители, които не използват conda, инсталирането на библиотека е лесно. Можете да използвате install.packages('NAME OF PACKAGE') с името на пакета в кавички в скобите. R го инсталира на първото място, върнато от .libPaths().

Качване в Google Drive

За да качите файл в Google диск, трябва да използвате функцията drive_upload().

Всеки път, когато рестартирате Rstudio, ще бъдете подканени да разрешите достъп до tidyverse Google Drive.

Основният синтаксис на drive_upload() е

drive_upload(file, path = NULL, name = NULL)
arguments:
- file: Full name of the file to upload (i.e., including the extension)
- path: Location of the file- name: You can rename it as you wish. By default, it is the local name.

След като стартирате кода, трябва да потвърдите няколко въпроса

drive_upload("table_car.csv", name = "table_car")

Изход:

## Local file: 
## * table_car.csv 
## uploaded into Drive file: 
## * table_car: 1hwb57eT-9qSgDHt9CrVt5Ht7RHogQaMk 
## with MIME type: 
## * text/csv

Въведете 1 в конзолата, за да потвърдите достъпа

Google Drive

След това ще бъдете пренасочени към Google API, за да разрешите достъпа. Кликнете върху „Разреши“.

Google Drive

След като удостоверяването приключи, можете да затворите браузъра си.

Google Drive

В конзолата на Rstudio можете да видите обобщението на извършената стъпка. Google Файлът, намиращ се локално на устройството, е качен успешно. Google присвоил идентификатор на всеки файл в устройството.

Google Drive

Можете да видите този файл в Google Spreadsheet.

drive_browse("table_car")

Изход:

Ще бъдете пренасочени към Google Spreadsheet

Google Drive

Внос от Google Drive

Изтеглянето по идентификатор на файла е надеждният начин. Ако знаете името на файла, първо извлечете неговия идентификатор:

Забележка: В зависимост от вашата интернет връзка и размера на вашия Диск това отнема време.

x <-drive_get("table_car")
as_id(x)

Google Drive

Съхранили сте ID в променливата x. Функцията drive_download() позволява изтегляне на файл от Google Drive.

Основният синтаксис е:

drive_download(file, path = NULL, overwrite = FALSE)
arguments:
- file:  Name or id of the file to download
-path: Location to download the file. By default, it is downloaded to the working directory and the name as in Google Drive
-overwrite = FALSE: If the file already exists, don't overwrite it. If set to TRUE, the old file is erased and replaced by the new one.

Най-накрая можете да изтеглите файла:

download_google <- drive_download(as_id(x), overwrite = TRUE)

Code Обяснение

  • drive_download(): Функция за изтегляне на файл от Google Drive
  • as_id(x): Използвайте ID, за да разглеждате файла Google Drive
  • overwrite = TRUE: Ако файлът съществува, презапишете го, в противен случай изпълнението е спряно. За да видите името на файла локално, можете да използвате:

Изход:

Google Drive

Файлът се съхранява във вашата работна директория. Не забравяйте да добавите файловото разширение, преди да го отворите в R. Можете да създадете пълното име с функцията paste() (например table_car.csv)

google_file <-download_google$local_path
google_file
path <-paste(google_file, ".csv", sep = "")
google_table_car <-read.csv(path)
google_table_car

Изход:

##   X gear mean_mpg mean_disp
## 1 1    3 16.10667  326.3000
## 2 2    4 24.53333  123.0167
## 3 3    5 21.38000  202.4800

Накрая можете да премахнете файла от вашия Google шофиране.

## remove file
drive_find("table_car") %>%drive_rm()

Изход:

Google Drive

Изтриването се обработва асинхронно от Google, така че може да отнеме известно време, за да изчезне файлът.

Експортиране до Dropbox

R взаимодейства с Dropbox чрез библиотеката rdrop2. Библиотеката не е налична и в Anaconda. Можете да го инсталирате през конзолата

install.packages('rdrop2')
library(rdrop2)

Вие предоставяте временен достъп до Dropbox с вашите идентификационни данни. След като бъде удостоверен, R може да създава, премахва, качва и изтегля файлове във вашия Dropbox.

На първо място, трябва да дадете достъп до акаунта си. Идентификационните данни се кешират по време на цялата сесия.

drop_auth()

Ще бъдете пренасочени към Dropbox за потвърждение на удостоверяването.

Експортиране до Dropbox

Ще получите страница за потвърждение. Можете да го затворите и да се върнете към R

Експортиране до Dropbox

Можете да създадете папка с функцията drop_create().

  • drop_create('my_first_drop'): Създайте папка в първия клон на Dropbox
  • drop_create('First_branch/my_first_drop'): Създайте папка в съществуващата папка First_branch.
drop_create('my_first_drop')

Изход:

Експортиране до Dropbox

В DropBox

Експортиране до Dropbox

За да качите .csv файла във вашия Dropbox, използвайте функцията drop_upload().

Основен синтаксис:

drop_upload(file, path = NULL, mode = "overwrite")
arguments:
- file: local path
- path: Path on Dropbox 
- mode = "overwrite":  By default, overwrite an existing file. If set to `add`, the upload is not completed.
drop_upload('table_car.csv', path = "my_first_drop")

Изход:

Експортиране до Dropbox

На DropBox

Експортиране до Dropbox

Можете да прочетете csv файла от Dropbox с функцията drop_read_csv()

dropbox_table_car <-drop_read_csv("my_first_drop/table_car.csv")
dropbox_table_car

Изход:

##   X gear mean_mpg mean_disp
## 1 1    3 16.10667  326.3000
## 2 2    4 24.53333  123.0167
## 3 3    5 21.38000  202.4800

Когато приключите с използването на файла и искате да го изтриете. Трябва да напишете пътя на файла във функцията drop_delete()

drop_delete('my_first_drop/table_car.csv')

Изход:

Експортиране до Dropbox

Възможно е също да изтриете папка

drop_delete('my_first_drop')

Изход:

Експортиране до Dropbox

Експортиране на данни от R: Справочник на функциите

Всяка функция за експортиране, използвана в този урок, е изброена по-долу:

Библиотека Цел функция
база Експортиране на csv write.csv()
XLSX Експортиране на Excel write.xlsx()
убежище Експортиране на spss write_sav()
убежище Експортиране на sas write_sas()
убежище Експортиране на състояние write_dta()
база Експортиране на R обекти запазване() / запазванеRDS()
Google Диск Качи Google Drive drive_upload()
Google Диск Отворете Google Drive drive_browse()
Google Диск Извличане на идентификатор на файл drive_get(as_id())
Google Диск Изтегли от Google Drive drive_download()
Google Диск Премахване на файл от Google Drive drive_rm()
rdrop2 заверка drop_auth()
rdrop2 Създайте папка drop_create()
rdrop2 Качване в Dropbox drop_upload()
rdrop2 Прочетете csv от Dropbox drop_read_csv()
rdrop2 Изтриване на файл от Dropbox drop_delete()

Въпроси и Отговори

saveRDS() съхранява един обект, а readRDS() ви позволява да му присвоите произволно име. save() съхранява няколко обекта, а load() възстановява оригиналните им имена, което може тихо да презапише променливи, които вече са във вашата среда.

По подразбиране write.csv() записва имената на редовете като неназована първа колона. За да го потиснете, използвайте row.names = FALSE, в противен случай повторното импортиране на файла ще доведе до разпръсната X колона.

Използвайте writexl::write_xlsx() или openxlsx::write.xlsx(). И двата записват .xlsx файлове в чист R без Java зависимост, която избягва rJava настройката, която xlsx пакетът изисква.

Използвайте RDS или Parquet, вместо CSV. И двата формата запазват типовете колони и нивата на факторите, така че наборът от данни за обучение се презарежда по един и същ начин. CSV преобразува типовете безшумно и е често срещан източник на невъзпроизводими резултати от модела.

Да. Асистентите с изкуствен интелект могат да диагностицират грешки в разрешенията, грешни работещи директории и липсващи Java за xlsx пакета. Винаги проверявайте местоназначението с getwd(), преди да се доверите на предложен път.

Обобщете тази публикация с: