5 pilihan berguna dalam data R. tabel

Seperti semua fungsi dalam pakej data.table R, fread cepat. Sangat laju. Tetapi ada lebih banyak yang perlu dipahami daripada kepantasan. Ia mempunyai beberapa ciri dan pilihan yang berguna semasa mengimport data luaran ke R. Berikut adalah lima yang paling berguna.

Nota: Sekiranya anda ingin mengikuti, muat turun fail CSV New York Times harian kes Covid-19 oleh daerah AS di //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Gunakan pilihan sempit fread

Adakah fail anda besar? Adakah anda ingin memeriksa strukturnya sebelum mengimport semuanya - tanpa perlu membukanya dalam penyunting teks atau Excel? Gunakan nrowspilihan fread untuk mengimport sebahagian sahaja fail untuk penerokaan .

Kod di bawah mengimport hanya 10 baris pertama CSV.

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

Sekiranya anda hanya ingin melihat nama lajur tanpa data sama sekali, anda boleh menggunakannya nrows = 0

Gunakan pilihan pilih fread

Setelah mengetahui struktur fail, anda boleh memilih lajur mana yang akan diimport . selectpilihan fread membolehkan anda memilih lajur yang ingin anda simpan. selectmengambil vektor sama ada nama lajur atau nombor kedudukan lajur . Sekiranya ada nama, mereka mesti ada tanda petik, seperti kebanyakan vektor rentetan watak:

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

pilih = c ("tarikh", "daerah", "negeri", "kes"))

Seperti biasa, nombor tidak memerlukan tanda petik:

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

Anda boleh menggunakan objek R dengan vektor nama lajur di dalam fread, seperti yang anda lihat dalam kumpulan kod seterusnya. Saya membuat my_cols vektor dengan tarikh, daerah, negeri dan kes; maka saya menggunakan vektor itu dalam fread.

my_cols <- c ("tarikh", "daerah", "negeri", "kes")

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

Kebalikannya selectialah drop. Anda boleh memilih untuk mengimport semua lajur kecuali yang anda tentukan drop, seperti:

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

Seperti dengan select, dropmengambil vektor nama lajur atau kedudukan berangka. 

Gunakan fread dengan grep

Sekiranya anda sudah biasa dengan Unix, anda boleh  melaksanakan alat baris perintah langsung dari dalam . Sebagai contoh, jika saya hanya mahukan data California, saya boleh menggunakan grep untuk hanya mengimport baris yang mengandungi teks "California." Perhatikan bahawa ini mencari setiap keseluruhan baris sebagai rentetan teks, bukan lajur tertentu, jadi data anda harus dalam format yang masuk akal.

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

Malangnya, grep tidak memahami nama lajur fail yang asal, jadi anda akhirnya mempunyai nama lalai.

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 membolehkan kita menentukan nama lajur dengan col.namespilihan. Saya boleh menetapkan nama berdasarkan nama dari mydt10 yang saya buat di atas.

ca head (ca) tarikh daerah menyatakan kes 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

Kami juga dapat menggunakan ungkapan biasa, dengan -Epilihan grep , membiarkan kami melakukan carian yang lebih kompleks, seperti mencari empat keadaan sekaligus. 

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

col.names = nama (mydt10))

Sekali lagi, peringatan: Ini mencari setiap nama negeri di mana sahaja di baris , bukan hanya di lajur negeri. Sekiranya anda menjalankan kod di atas dan memeriksa negeri mana yang termasuk dalam hasilnya unique(states4$state), anda akan melihat Oklahoma dan Missouri di lajur negeri bersama dengan Texas, Arizona, Florida, dan Carolina Selatan. Ini kerana kedua-dua Oklahoma dan Missouri mempunyai daerah bernama Texas.

Oleh itu, grep semasa mengimport fail adalah cara untuk menyaring banyak data yang anda tidak mahukan dari set data yang sangat besar; tetapi itu tidak menjamin anda hanya mendapat apa yang anda mahukan. Selepas import seperti ini, anda masih harus menapis secara khusus pada data lajur untuk memastikan anda tidak mendapat sesuatu yang tidak dijangka.

Gunakan pilihan colClasses fread

Anda boleh menetapkan kelas lajur semasa diimport - hanya untuk beberapa lajur, bukan setiap satu. Sebagai contoh, lajur tarikh dalam data ini dimasukkan sebagai rentetan watak, walaupun dalam format tahun-bulan-hari. Kita boleh menetapkan tarikh bernama lajur ke jenis data Tarikh  semasa import menggunakan colClassespilihan. 

mydt <- fread ("us-counties.csv", colClasses = c ("tarikh" = "Tarikh"))

Sekarang, tarikh adalah Tarikh.

> str (mydt) Kelas 'data.table' dan 'data.frame': 322651 obs. daripada 6 pemboleh ubah: $ tarikh: Tarikh, format: "2020-01-21" "2020-01-22" "2020-01-23" ... $ county: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ state: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ kes: int 1 1 1 1 1 1 1 1 1 1 ... $ kematian: int 0 0 0 0 0 0 0 0 0 0 0 ...

Gunakan fread pada fail zip

Anda boleh mengimport fail berzip tanpa membuka zip terlebih dahulu . fread boleh mengimport fail gz dan bz2 secara langsung, seperti  mydt <- fread("myfile.gz"). Sekiranya anda perlu mengimport fail zip, anda boleh membuka zip dengan unziparahan sistem dalam fread, menggunakan sintaks  mydt <- fread(cmd = 'unzip -cq myfile.zip').

Untuk lebih banyak petua R, pergi ke halaman Do More With R.