5 opsi praktis dalam R data.table's fread

Seperti semua fungsi dalam paket R data.table, fread cepat. Sangat cepat. Tapi ada yang lebih ditakuti daripada kecepatan. Ini memiliki beberapa fitur dan opsi berguna saat mengimpor data eksternal ke R. Berikut adalah lima yang paling berguna.

Catatan: Jika Anda ingin mengikuti, unduh file CSV New York Times kasus Covid-19 harian menurut wilayah AS di //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Gunakan opsi fread's nrows

Apakah file Anda besar? Apakah Anda ingin memeriksa strukturnya sebelum mengimpor semuanya - tanpa harus membukanya di editor teks atau Excel? Gunakan nrowsopsi fread untuk mengimpor hanya sebagian dari file untuk eksplorasi .

Kode di bawah hanya mengimpor 10 baris pertama dari CSV.

mydt10 <- fread ("us-counties.csv", nrows = 10)

Jika Anda hanya ingin melihat nama kolom tanpa data sama sekali, Anda bisa menggunakan nrows = 0

Gunakan opsi pilih fread

Setelah mengetahui struktur file, Anda dapat memilih kolom mana yang akan diimpor . selectOpsi fread memungkinkan Anda memilih kolom yang ingin Anda simpan. selectmengambil vektor baik nama kolom atau nomor posisi kolom . Jika nama, mereka harus dalam tanda kutip, seperti kebanyakan vektor string karakter:

mydt <- fread ("us-counties.csv",

pilih = c ("tanggal", "county", "negara bagian", "kasus"))

Seperti biasa, angka tidak membutuhkan tanda kutip:

mydt <- fread ("us-counties.csv", pilih = c (1,2,3,5))

Anda dapat menggunakan objek R dengan vektor nama kolom di dalam fread, seperti yang Anda lihat di grup kode berikut ini. Saya membuat vektor my_cols dengan tanggal, kabupaten, negara bagian, dan kasus; kemudian saya menggunakan vektor itu di dalam ketakutan.

my_cols <- c ("date", "county", "state", "cases")

mydt <- fread ("us-counties.csv", pilih = my_cols)

Kebalikan dari selectadalah drop. Anda dapat memilih untuk mengimpor semua kolom kecuali yang Anda tentukan drop, seperti:

mydt <- fread ("us-counties.csv", drop = c ("fips", "death"))

Seperti dengan select, dropmengambil vektor nama kolom atau posisi numerik. 

Gunakan fread dengan grep

Jika Anda terbiasa dengan Unix, Anda dapat  menjalankan alat baris perintah langsung dari dalam fread . Misalnya, jika saya hanya ingin data California, saya dapat menggunakan grep untuk hanya mengimpor baris yang berisi teks "California". Perhatikan bahwa ini mencari setiap baris sebagai string teks, bukan kolom tertentu, jadi data Anda harus dalam format yang masuk akal.

ca <- fread ("grep California us-counties.csv")

Sayangnya, grep tidak memahami nama kolom file asli, jadi Anda menggunakan nama default.

kepala (ca) V1 V2 V3 V4 V5 V6 1: 2020-01-25 Orange California 6059 1 0 2: 2020-01-26 Los Angeles California 6037 1 0 3: 2020-01-26 Orange California 6059 1 0 4: 2020 -01-27 Los Angeles California 6037 1 0 5: 2020-01-27 Orange California 6059 1 0 6: 2020-01-28 Los Angeles California 6037 1 0

Namun, fread memungkinkan kita menentukan nama kolom dengan col.namesopsi. Saya dapat mengatur nama berdasarkan nama dari mydt10 yang saya buat di atas.

ca head (ca) date county state fips kasus kematian 1: 2020-01-25 Orange California 6059 1 0 2: 2020-01-26 Los Angeles California 6037 1 0 3: 2020-01-26 Orange California 6059 1 0 4: 2020-01-27 Los Angeles California 6037 1 0 5: 2020-01-27 Orange California 6059 1 0 6: 2020-01-28 Los Angeles California 6037 1 0

Kita juga dapat menggunakan ekspresi reguler, dengan -Eopsi grep , memungkinkan kita melakukan pencarian yang lebih kompleks, seperti mencari empat status sekaligus. 

state4 <- fread (cmd = "grep -E 'Texas | Arizona | Florida | South Carolina' us-counties.csv",

col.names = nama (mydt10))

Sekali lagi, pengingat: Ini mencari masing-masing nama negara bagian itu di mana saja di baris , tidak hanya di kolom negara bagian. Jika Anda menjalankan kode di atas dan memeriksa negara bagian apa yang termasuk dalam hasil dengan unique(states4$state), Anda akan melihat Oklahoma dan Missouri di kolom negara bagian bersama dengan Texas, Arizona, Florida, dan Carolina Selatan. Itu karena Oklahoma dan Missouri memiliki kabupaten bernama Texas.

Jadi, grep selama impor file adalah cara untuk memfilter banyak data yang tidak Anda inginkan dari kumpulan data yang sangat besar; tetapi itu tidak menjamin Anda hanya mendapatkan apa yang Anda inginkan. Setelah jenis impor ini, Anda tetap harus memfilter secara khusus pada data kolom untuk memastikan Anda tidak mendapatkan sesuatu yang tidak diharapkan.

Gunakan opsi colClasses dari fread

Anda dapat mengatur kelas kolom selama impor - hanya untuk beberapa kolom, tidak setiap kolom. Misalnya, kolom tanggal dalam data ini masuk sebagai string karakter, meskipun dalam format tahun-bulan-hari. Kita dapat mengatur kolom bernama tanggal ke tipe data Tanggal  selama impor menggunakan colClassesopsi. 

mydt <- fread ("us-counties.csv", colClasses = c ("date" = "Date"))

Sekarang, tanggal adalah Tanggal.

> str (mydt) Kelas 'data.table' dan 'data.frame': 322651 obs. dari 6 variabel: $ date: Tanggal, format: "2020-01-21" "2020-01-22" "2020-01-23" ... $ county: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ negara bagian: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ cases: int 1 1 1 1 1 1 1 1 1 1 ... $ kematian: int 0 0 0 0 0 0 0 0 0 0 ...

Gunakan fread pada file zip

Anda dapat mengimpor file zip tanpa harus mengekstraknya terlebih dahulu . fread dapat mengimpor file gz dan bz2 secara langsung, seperti  mydt <- fread("myfile.gz"). Jika Anda perlu mengimpor file zip, Anda dapat mengekstraknya dengan unzipperintah sistem dalam fread, menggunakan sintaks  mydt <- fread(cmd = 'unzip -cq myfile.zip').

Untuk tips lebih lanjut, kunjungi halaman Do More With R.