Datan kirjoittaminen useisiin muotoihin
Viekää data framet CSV-, Excel- ja RDS-muotoihin write_csv()- ja writexl-työkaluilla.
Datan kirjoittaminen useisiin muotoihin on ilmainen R Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu R Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. R Academy-kurssilla on yhteensä 4 oppituntia.
Tietojen kirjoittaminen R:stä
Tietojen lukeminen on vasta puolet kokonaisuudesta — tulokset on myös tallennettava. R tukee useita tulostusmuotoja: CSV:tä yleiseen yhteensopivuuteen, RDS:ää R-olioiden täsmälliseen säilyttämiseen, Parquetia tehokkaaseen analytiikkaan ja monia muita. Valitse muoto kohderyhmän ja käyttötarkoituksen perusteella.
library(readr)
# Create a sample data frame to write
df <- data.frame(
name = c('Alice','Bob','Carol'),
score = c(85.5, 92.0, 78.3),
grade = c('B','A','C'),
passed = c(TRUE, TRUE, TRUE)
)
print(df)
cat('\nWe will save this in multiple formats!')write_csv() — Tallentaminen CSV-muotoon
write_csv(df, 'file.csv') tallentaa data framen pilkuilla eroteltuna tiedostona. Se EI kirjoita rivinimiä oletusarvoisesti (toisin kuin write.csv()). Tulos käyttää aina UTF-8-koodausta. Funktio palauttaa data framen näkymättömästi, joten sitä voidaan käyttää putkissa.
library(readr)
df <- data.frame(
name = c('Alice','Bob','Carol'),
score = c(85, 92, 78)
)
# Write to /tmp for demonstration
write_csv(df, '/tmp/students.csv')
# Verify by reading back
read_csv('/tmp/students.csv', show_col_types=FALSE)write_csv()-asetukset
write_csv() hyväksyy useita asetuksia: na='NA' määrittää, miten NA-arvot kirjoitetaan, append=TRUE lisää tiedot olemassa olevan tiedoston loppuun, col_names=FALSE jättää otsikkorivin pois ja quote määrittää, milloin kentät ympäröidään lainausmerkeillä.
library(readr)
df <- data.frame(
name = c('Alice','Bob'),
city = c('New York','Los,Angeles'), # Contains comma
score = c(85, NA)
)
# na='' writes NA as empty string (common Excel convention)
write_csv(df, '/tmp/test_write.csv', na='')
cat(paste(read_lines('/tmp/test_write.csv'), collapse='\n'))write_tsv() — Sarkaineroteltu tuloste
write_tsv(df, 'file.tsv') tallentaa tiedot sarkaineroteltuina. Tätä muotoa kannattaa käyttää, kun tiedot sisältävät pilkkuja tai kun seuraava järjestelmä odottaa TSV-muotoa. Asetukset ovat samat kuin funktiossa write_csv().
library(readr)
df <- data.frame(
address = c('123 Main St, NYC','456 Oak Ave, LA'),
score = c(85, 92)
)
# TSV avoids delimiter conflict with commas in addresses
write_tsv(df, '/tmp/addresses.tsv')
cat(paste(read_lines('/tmp/addresses.tsv'), collapse='\n'))saveRDS() — Minkä tahansa R-olion tallentaminen
saveRDS(obj, 'file.rds') serialisoi minkä tahansa R-olion levylle R:n omassa binäärimuodossa. readRDS('file.rds') palauttaa olion täsmälleen ennalleen ja säilyttää saraketyypit, faktorit, attribuutit ja jopa mallioliot. Muoto ei ole ihmisen luettavissa, mutta oliot ovat täysin siirrettävissä R-istuntojen välillä.
library(readr)
df <- data.frame(
name = c('Alice','Bob'),
score = c(85.5, 92.0),
grade = factor(c('B','A'), levels=c('A','B','C','D'))
)
# Save with full type preservation
saveRDS(df, '/tmp/students.rds')
# Restore exactly
df2 <- readRDS('/tmp/students.rds')
print(df2)
print(class(df2$grade)) # factor — preserved!saveRDS() vs save() — Keskeinen ero
saveRDS(obj, 'file.rds') tallentaa yksittäisen olion ilman sen nimeä. readRDS() avulla sille voidaan antaa mikä tahansa nimi. save(obj1, obj2, 'file.RData') tallentaa useita nimettyjä olioita; load() palauttaa ne alkuperäisillä nimillään (ja voi korvata olemassa olevia muuttujia).
# saveRDS: single object, flexible on load
model <- lm(mpg ~ wt, data=mtcars)
saveRDS(model, '/tmp/my_model.rds')
best_model <- readRDS('/tmp/my_model.rds') # Any name!
cat('R-squared:', round(summary(best_model)$r.squared, 3), '\n')
# save: multiple named objects, fixed names on load
# save(model, mtcars, file='/tmp/workspace.RData')
# load('/tmp/workspace.RData') # Restores 'model' and 'mtcars'write_delim() — Mukautettu erotin
write_delim(df, file, delim='|') kirjoittaa tiedot millä tahansa erottimella. Käytä tätä, kun seuraava järjestelmä odottaa pystyviivalla eroteltua tai muuta epätyypillistä tiedostomuotoa. Samat tietojen laadun takeet kuin funktiossa write_csv() ovat voimassa.
library(readr)
df <- data.frame(
id = 1:3,
name = c('Alice','Bob','Carol'),
value = c(100, 200, 150)
)
# Write pipe-delimited
write_delim(df, '/tmp/data.psv', delim='|')
cat(paste(read_lines('/tmp/data.psv'), collapse='\n'))Excel-tuloste writexl-paketilla
writexl-paketti (readxl-paketin oheispaketti) kirjoittaa data framet .xlsx-muotoon: writexl::write_xlsx(df, 'file.xlsx'). Useita laskentataulukoita varten välitä nimetty lista. Javaa tai Excelin asennusta ei tarvita.
# writexl::write_xlsx() — example (library not always available)
# library(writexl)
df1 <- data.frame(name=c('Alice','Bob'), score=c(85,92))
df2 <- data.frame(region=c('East','West'), sales=c(100,200))
# Single sheet:
# write_xlsx(df1, '/tmp/students.xlsx')
# Multiple sheets (named list):
# write_xlsx(
# list(students=df1, sales=df2),
# '/tmp/report.xlsx'
# )
cat('writexl writes pure .xlsx without Java or Excel!')Parquet-tiedostot arrow-paketilla
Apache Parquet on suurille aineistoille sopiva sarakepohjainen tallennusmuoto: se pakkaa tiedot tehokkaasti ja lukee sarakepohjaisissa kyselyissä paljon CSV:tä nopeammin. arrow-paketti tarjoaa funktiot write_parquet() ja read_parquet().
# arrow::write_parquet() concept
# library(arrow)
# Large CSV -> Parquet (10-100x smaller, 10-100x faster reads)
# df <- read_csv('big_file.csv')
# write_parquet(df, 'big_file.parquet')
# df_back <- read_parquet('big_file.parquet')
# Parquet benefits:
# - Columnar: only reads columns you need
# - Compressed: ~10x smaller than CSV
# - Typed: no type re-guessing on read
# - Partitioned: split by date/region for parallel reads
cat('Parquet is the modern standard for large-scale analytics in R!')Tietojen kirjoittaminen putkessa
Sekä write_csv() että saveRDS() palauttavat syötteensä näkymättömästi, joten niitä voidaan käyttää putken sisällä katkaisematta työnkulkua. Lisää putken keskelle kirjoitusvaihe tarkistuspisteeksi käyttämällä write_csv()-funktiota, jotta tulokset ovat toistettavia.
library(readr)
library(dplyr)
# Write mid-pipeline as a checkpoint
final_result <- data.frame(
region=c('East','West','North'),
sales=c(100,200,80)
) %>%
mutate(pct = round(100*sales/sum(sales),1)) %>%
{. ->> checkpoint_df; .} %>% # Save checkpoint
filter(sales > 90)
write_csv(checkpoint_df, '/tmp/checkpoint.csv')
print(final_result)Opas muodon valintaan
Sopivan tulostusmuodon valinta riippuu tavoitteestasi:
- CSV/TSV: yleiskäyttöisiä ja ihmisen luettavia; kuka tahansa voi avata ne
- RDS: R:stä R:ään; säilyttää kaikki tyypit ja attribuutit täsmälleen
- xlsx: yrityskäyttäjille ja Excelin käyttäjille
- Parquet: suurille aineistoille, analytiikkaputkille ja tuotantojärjestelmille
- JSON: rajapinnoille ja sisäkkäisille tai hierarkkisille tiedoille (
jsonlite::toJSON())
library(readr)
df <- data.frame(
id = 1:5,
value = c(10.5, 20.3, 15.7, 30.1, 25.8)
)
# CSV — universal
write_csv(df, '/tmp/data.csv')
# TSV — when commas are in data
write_tsv(df, '/tmp/data.tsv')
# RDS — R-native, type-preserving
saveRDS(df, '/tmp/data.rds')
cat('Files created:\n')
cat('CSV size:', file.size('/tmp/data.csv'), 'bytes\n')
cat('RDS size:', file.size('/tmp/data.rds'), 'bytes\n')Pikatarkistus
Mikä on saveRDS()-funktion keskeinen etu write_csv()-funktioon verrattuna R-tietojen tallentamisessa?
Kertaus: Tietojen kirjoittaminen
R:stä kirjoitettavien tietojen tärkeimmät kohdat:
write_csv(df, 'file.csv')— pilkuilla eroteltu, ei rivinimiä, UTF-8write_tsv(df, 'file.tsv')— sarkaineroteltu tulostewrite_delim(df, file, delim='|')— mikä tahansa erotinsaveRDS(obj, 'file.rds')— R:n binäärimuoto, säilyttää kaikki tyypitreadRDS('file.rds')— palauttaa olion millä tahansa nimellä;load()palauttaa alkuperäiset nimetwritexl::write_xlsx()— Excel-tuloste ilman Javaaarrow::write_parquet()— sarakepohjainen muoto suurille analyyttisille aineistoille
library(readr)
df <- data.frame(
name = c('Alice','Bob','Carol'),
score = c(85.5, 92.0, 78.3),
grade = factor(c('B','A','C'))
)
# CSV: universal but loses factor
write_csv(df, '/tmp/demo.csv')
df_csv <- read_csv('/tmp/demo.csv', show_col_types=FALSE)
cat('CSV grade type:', class(df_csv$grade), '\n') # character
# RDS: preserves factor
saveRDS(df, '/tmp/demo.rds')
df_rds <- readRDS('/tmp/demo.rds')
cat('RDS grade type:', class(df_rds$grade)) # factorOpi R tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 43
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”Datan kirjoittaminen useisiin muotoihin” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa R Academy-oppimispolun 3 oppituntia, myös oppitunnin “Datan kirjoittaminen useisiin muotoihin”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. R Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Datan kirjoittaminen useisiin muotoihin”?
Viekää data framet CSV-, Excel- ja RDS-muotoihin write_csv()- ja writexl-työkaluilla. Harjoittelet R Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni R Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin R Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Datan kirjoittaminen useisiin muotoihin”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä R Academy-oppitunnilla?
Kyllä. Jokainen R Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- CSV-tiedostojen lukeminen read_csv()-funktiolla
- TSV- ja kiinteän levyisen tiedostojen jäsentäminen
- Excel-tiedostojen tuominen readxl:llä
- Datan kirjoittaminen useisiin muotoihin