Data.table: sketsa

Dibuat pada 11 Nov 2014  ·  54Komentar  ·  Sumber: Rdatatable/data.table

Seri sketsa HTML:

Direncanakan untuk v1.9.8

  • [ ] Tur singkat data.table
  • [x] [Kunci dan subset berbasis pencarian biner cepat](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-keys-fast-subset.html)
  • [x] [Indeks sekunder dan pengindeksan otomatis](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-secondary-indices-and-auto-indexing.html)
  • [ ] Bergabung dengan sketsa . a) _joins_ vs _subsets_ -- memperluas subset berbasis pencarian biner ke join + join bersyarat / non-equi, rolling dan interval join. b) by=.EACHI, gabungkan + fitur pembaruan. c) Dokumentasikan penggunaan i.col seperti yang diarsipkan di #1038. d) Juga membahas tentang kinerja/keuntungan dari #1232.
  • [ ] Tutup get() dan mget() .
  • [ ] Tambahkan tentang alasan argumen on= di FAQ (#1623).
  • [ ] FAQ 5.3 perlu menyebutkan bahwa ini adalah salinan _shallow_ yang dilakukan untuk mengembalikan alokasi berlebih. Terima kasih kepada Jan karena telah menautkannya di #1729.

Rilis mendatang

  • [ ] internal data.table, aspek kinerja dan _ekspresif_
  • [ ] Membaca banyak file ( fread + rbindlist ), memesan, memberi peringkat, dan mengatur operasi
  • [ ] Sketsa IDateTime
  • [ ] Dokumentasikan perbedaan antara data.table() dan data.frame() suatu tempat - masalah yang relevan: #968, #877. Mungkin sedikit lebih detail di FAQ.
  • [ ] FAQ kursus
  • [ ] Penggunaan data.table :

    • [ ] NSE

    • [ ] ...

  • [ ] Sketsa pengaturan waktu (pindahkan #520 ke sini untuk mendapatkan semuanya di satu tempat, tetapi tidak yakin apakah kami memerlukannya sebagai vinyet karena kami memiliki Wiki dengan tolok ukur/waktu).
  • [ ] fread+fwrite vignette, sertakan juga fitur Kenyamanan dari fread wiki, juga https://github.com/Rdatatable/data.table/issues/2855

Selesai:

  • [x] [Pengantar data.table](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-intro-vignette.html) - sintaks data.table, bentuk umum, baris subset dalam i , pilih / lakukan di j dan agregasi menggunakan by .
  • [x] [Semantik Referensi](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-reference-semantics.html) (_add/update/delete_ kolom dengan referensi, dan lihat bahwa kami dapat menggabungkan dengan i dan by dengan cara yang sama seperti sebelumnya)
  • [x] [Pembentukan ulang yang efisien menggunakan data.tables](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-reshape.html)
  • [x] Tautkan ke jawaban ini di SO pada by=.EACHI hingga sketsa selesai.

Minor:

  • [ ] Operasi menggunakan integer64 , dan mempromosikannya untuk _bilangan bulat besar_.

Catatan (untuk memperbarui sketsa saat ini berdasarkan masukan): Tolong beri tahu saya jika saya melewatkan sesuatu..

Pengenalan data.table:

  • [x] order di i .
  • [x] Jelaskan cara memberi nama kolom di j saat memilih/menghitung.
  • [x] Tekankan bahwa _keyby_ diterapkan _setelah_ memperoleh hasil pada hasil yang dihitung, bukan pada data.table asli.
  • [x] Sebutkan pembaruan baru untuk .SDcols dan cols di with=FALSE dapat memilih kolom sebagai colA:colB .

    Semantik referensi:

  • [ ] Jelaskan juga semua fungsi set* lain yang relevan di sini.. ( setnames , setcolorder dll..)

  • [ ] Terutama set .
  • [x] Jelaskan bahwa 1b) the := operator hanya mendefinisikan cara untuk menggunakannya - contoh di sana tidak berfungsi karena hanya menunjukkan dua cara berbeda untuk menggunakannya -- Mengikuti komentar ini .

    Kunci dan subset berbasis pencarian biner cepat:

  • [ ] Tambahkan contoh subset menggunakan kunci integer/ganda.

  • [ ] Perbedaan dalam default "nomatch" dalam subset berbasis pencarian biner.
  • [ ] mengganti NA dengan subset berbasis pencarian biner mungkin?

    FAQ (paling tepat di sini, saya pikir).

  • [x] Perbarui FAQ dengan masalah pada pointer eksternal menjadi NULL saat membaca objek R dari file, misalnya, menggunakan readRDS() . Perbarui posting SO ini .

  • [ ] Jelaskan dengan contoh, tentang mengalokasikan data.table secara berlebihan menggunakan alloc.col() , dan kapan menggunakannya (ketika Anda perlu membuat beberapa kolom), dan mengapa. Perbarui posting SO ini .
documentation internals

Semua 54 komentar

fread paling tidak layak untuk disebutkan.
Poin-poin di atas terutama terkait dengan transformasi data, fread lebih merupakan ekstraksi data sehingga mungkin dilewati dalam sketsa seperti itu, namun IMO perlu menyebutkan kemampuan data.table .

edit: mana yang akan Anda gunakan: Rnw atau Rmd?

Setuju, dan diperbarui.

Saya ingin tahu tentang apa yang membuat pilek lebih cepat daripada mengatakan tapply . Salah satu bagian dari jawabannya adalah gforce, tetapi bagaimana dengan fungsi yang ditulis pengguna? Saya tidak dapat menemukan apa pun tentang ini. Ada posting bagus tentang panda: http://wesmckinney.com/blog/?p=489
Seseorang bahkan dapat membandingkannya dengan sapply . Misalnya, saya mulai dari daftar vektor. Apakah layak menambahkan semua vektor dalam satu kolom di data.table dan menggunakan by alih-alih sapply ?

@matthieugomez pertanyaan menarik! Akan menyenangkan untuk menutupi ini juga. Tetap datang :-).

Saya akan tertarik untuk belajar tentang IDateTime dan beberapa kasus penggunaan untuk itu.

@gsee diperbarui.

Menjadi baru untuk R dan data.table (sejak Maret), saya akan mengatakan bahwa perlu ada pengenalan berorientasi hasil dasar yang bertentangan dengan yang berorientasi fungsi saat ini. Dengan kata lain, membaca apa yang dilakukan setiap parameter di data.table adalah satu hal, tetapi mereka sering kali tidak masuk akal tanpa mempertimbangkan kasus penggunaan. Meskipun ada contoh keluaran, banyak orang perlu pergi ke arah lain. Artinya, mereka tahu output apa yang mereka butuhkan, tetapi mereka tidak tahu fungsi/parameter/pengaturan apa yang paling tepat untuk digunakan. Akan sangat membantu jika Anda memiliki pendekatan resep sederhana untuk memulainya.

Bagaimana cara membuat subset data saya?
Bagaimana cara melakukan operasi pada subset data saya untuk membuat set data baru atau yang diperbarui?
Bagaimana cara menambahkan kolom baru?
Bagaimana cara menghapus kolom?
Bagaimana cara membuat satu variabel?
Bagaimana cara membuat banyak variabel?
Bagaimana cara melakukan operasi yang berbeda pada subset data saya yang berbeda? (.OLEH)
Bagaimana cara menggunakan data.table dalam suatu fungsi dan meneruskan nama dan kolom data.table untuk dioperasikan?
Bagaimana cara melakukan beberapa operasi berurutan pada data.table yang sama?
Bisakah saya memilih subset data dan melakukan operasi pada itu pada saat yang sama?
Kapan saya harus berhati-hati dalam membuat/memperbarui variabel dengan referensi?
Bagaimana cara memilih satu pengamatan per kelompok (pertama, terakhir)?
Bagaimana cara menyetel kunci dan apa bedanya dengan menyetel indeks?
Dalam kondisi apa kunci saya dihapus ketika saya melakukan operasi pada data.table saya?
Bisakah saya menggunakan sintaks "gabung" biasa atau apakah saya perlu menggunakan sintaks data.table (Y[X])?
Bagaimana cara menciutkan daftar daftar menjadi satu data.table besar? Bagaimana jika kolom berada dalam urutan yang berbeda?

Mungkin ada banyak item lain di SO yang dapat diedit menjadi kompilasi pertanyaan dan jawaban sederhana.

@markdanese Terima kasih atas saran Anda. Ini semua bagus untuk dimiliki, tetapi mungkin sebagai wiki terpisah, karena mereka sangat khusus tentang tugas-tugas tertentu. Tujuan dari vignette adalah untuk memperkenalkan sintaks data.table yang menggambarkan betapa fleksibel dan kuatnya itu, sehingga Anda dapat melakukan tugas-tugas ini sendiri.

Saya sedang menulis sketsa sekarang (secepat yang saya bisa), dan formatnya kurang lebih seperti ini (Tanya Jawab) dan menjelaskan jawabannya dengan sebuah contoh. Setelah sketsa pertama saya dipoles, saya bermaksud mempostingnya di sini untuk mendapatkan umpan balik.. Akan sangat bagus untuk mengetahui apa yang Anda pikirkan juga.

Terima kasih lagi.

Perpanjangan lebih lanjut dari gagasan halaman wiki: Tautan FAQ dan Fragmen Kode (Lanjutan) yang terdaftar di http://www.ats.ucla.edu/stat/r/ mungkin menjadi sumber yang berguna untuk membedakan tugas tradisional di R dengan data .cara meja. Saya melakukan sesuatu seperti ini di posting blog ( http://vijaylulla.com/wp/2014/11/12/grouping-in-r-using-data-table/ ) untuk menunjukkannya kepada rekan saya. Maaf untuk promosi diri yang tak tahu malu.

Saya telah menyelesaikan sketsa _Introduction to data.table_ (lihat tautan di atas). Akan sangat bagus untuk mengetahui apa yang Anda pikirkan.

Terima kasih kepada @jangorecki dan @brodieG untuk masukan yang luar biasa, dan tentu saja @mattdowle :-).

Ini benar-benar hebat. Berharap itu ada setahun yang lalu ketika saya mulai menggunakan data.table. Beberapa hal kecil di bawah ini untuk pertimbangan Anda:
Anda mungkin ingin menyebutkan bahwa Anda dapat mengurutkan (melalui order ) dalam i di ringkasan Anda di bagian akhir. Anda mungkin juga ingin menyebutkan ini di awal. Anda juga dapat menyebutkan bahwa ada penggabungan yang lebih canggih yang dapat dilakukan di i melibatkan kunci yang tidak tercakup. Itu memungkinkan Anda untuk menyebutkan fungsi utama i sehingga pembaca dapat mencari fungsi yang lebih canggih jika mereka membutuhkannya. Dan Anda dapat hyperlink ke mereka nanti.

Di bagian .SD Anda menulis "grup itu" tetapi mungkin lebih jelas untuk mengatakan "grup itu ditentukan menggunakan by ". Ini juga dilakukan sedikit kemudian.

Saya mungkin melewatkannya, tetapi akan lebih baik untuk menjadi sedikit lebih jelas bahwa .SD dengan by pada dasarnya membatasi data ke kolom .SD dan kemudian membuat satu set data.tables untuk setiap kombinasi unik dari variabel dalam by . Kemudian memproses data.tables ini dalam urutan variabel by menggunakan fungsi dari j . Anda bahkan dapat menyebutkan bahwa ada simbol khusus yang memungkinkan pengguna mengakses beberapa indeks yang dihasilkan sebagai bagian dari pemrosesan itu, tetapi ini berada di luar cakupan sketsa pendahuluan.

Sekali lagi, ini hanya saran. Kerja keras Anda (dan Matt) sangat dihargai.

Pada hari Sabtu, 17 Januari 2015 jam 18.22, Tandai sebagai orang Denmark [email protected]
menulis:

Ini benar-benar hebat. Berharap itu ada setahun yang lalu ketika saya mulai menggunakan
tabel data. Beberapa hal kecil di bawah ini untuk pertimbangan Anda:

Terima kasih.

Anda mungkin ingin menyebutkan bahwa Anda dapat mengurutkan (melalui pesanan) di i in your
ringkasan di akhir. Anda mungkin juga ingin menyebutkan ini di awal.

Oh jepret! Poin yang bagus. Saya harus menambahkan "pesanan(..)" di awal, dan
akan menambah ringkasan juga.

Anda juga bisa menyebutkan bahwa ada gabungan yang lebih canggih yang bisa
dilakukan di i melibatkan kunci yang tidak tercakup. Itu memungkinkan Anda untuk menyebutkan
fungsi utama i agar pembaca bisa mencari yang lebih mahir
berfungsi jika mereka membutuhkannya.

Benar, akan dilakukan.

Dan Anda dapat hyperlink ke mereka nanti.

Itu, saya tidak yakin .. karena ini dimaksudkan untuk didorong ke CRAN, dan juga
di WIKI..

Di bagian .SD Anda menulis "grup itu" tetapi mungkin lebih jelas untuk
katakan "grup itu didefinisikan menggunakan oleh". Ini juga dilakukan sedikit kemudian sebagai
dengan baik.

Saya pikir saya mengeditnya ke "grup saat ini", tetapi ternyata tidak.. "oleh
grup saat ini, didefinisikan menggunakan di by " - bagaimana suaranya?

Saya mungkin melewatkannya, tetapi akan lebih baik untuk menjadi sedikit lebih jelas
bahwa .SD dengan pada dasarnya membatasi data ke kolom .SD dan kemudian
membuat satu set data.tables untuk setiap kombinasi unik dari variabel
di oleh. Kemudian memproses data.tables ini dalam urutan by
variabel menggunakan fungsi dari j.

Saya pikir Anda melewatkannya. Itu tepat di bawah kutipan blok di mana .SD berada
dijelaskan (di bagian 2e). Dan itu menjelaskan dengan tepat apa yang Anda sebutkan di sini ...

Anda bahkan dapat menyebutkan bahwa ada simbol khusus yang memungkinkan pengguna untuk
mengakses beberapa indeks yang dihasilkan sebagai bagian dari pemrosesan itu, tetapi itu
ini berada di luar cakupan sketsa pendahuluan.

Benar.. itulah alasan untuk tidak memperkenalkan simbol khusus lainnya.

Sekali lagi, ini hanya saran. Kerja kerasmu (dan Matt) sangat luar biasa
dihargai.

Saran yang bagus. Saya akan membalasnya setelah saya mengunggah sketsa lainnya.


Balas email ini secara langsung atau lihat di GitHub
https://github.com/Rdatatable/data.table/issues/944#issuecomment -70375167
.

Itu, saya tidak yakin .. karena ini dimaksudkan untuk didorong ke CRAN, dan juga
di WIKI..

AFAIK ketika Anda mendorong paket ke CRAN yang menyertakan Rmd dalam direktori vignettes , paket tersebut akan dibuat secara otomatis untuk memeriksa apakah pembuatan sketsa berhasil, tetapi kode sumber di CRAN akan berisi sketsa (html) yang sudah dibuat oleh Anda, bukan yang dari CRAN build/check.
CRAN adalah tempat yang baik untuk sketsa karena bagi banyak pengguna ini adalah tempat pertama untuk mencari dokumen/tutorial jadi saya pikir itu layak untuk memilikinya di CRAN.

Dan Anda dapat hyperlink ke mereka nanti.

Itu, saya tidak yakin.. karena ini dimaksudkan untuk didorong ke CRAN, dan juga di WIKI..

Tidakkah tautan folder tunggal berfungsi di CRAN? Saya belum benar-benar meletakkan apa pun di sana, tetapi sketsa ini menautkan beberapa orang lain di folder yang sama dengan menggunakan tautan relatif dan berfungsi dengan baik dari R (jelas tautannya bukan dari R, tetapi jika Anda menginstal paket dan menjalankan sketsa tautannya kerja.

Diperbarui dengan sketsa _Reference Semantics_.

terima kasih lagi untuk melakukan semua ini.

hanya satu saran lain tentang sesuatu untuk dibahas pada sketsa -- menggunakan data.table di dalam fungsi Anda sendiri. tidak menulis paket, tetapi hanya mencoba mengotomatiskan beberapa tugas umum. ada beberapa trik yang belum saya pahami. juga jika ada posting di suatu tempat tentang topik ini, tautan akan dihargai.

akhirnya, daftar sketsa posting stack overflow "berguna" mungkin berguna untuk topik yang tidak ingin Anda sertakan dalam sketsa.

hanya beberapa pemikiran acak.

Dua pemikiran:

  • Tautan ke sketsa di wiki
  • Dalam sketsa semantik referensi, tambahkan cara menggunakan := dengan ekspresi daftar yang dikutip (atau hanya tugas yang dikutip). Mungkin ini layak mendapatkan sketsanya sendiri, karena NSE (evaluasi non standar) di data.table memudahkan penggunaan interaktif tetapi mengharuskan untuk menggunakan data.table dalam fungsi atau paket Anda sendiri, Anda sekarang harus sesuatu tentang kutipan, evaluasi, pengganti, dan teman. Mungkin hanya menambahkan sesuatu seperti dt[, do.call(":=", eval(my_quoted_list)] ke sketsa dan kemudian membuat sketsa di NSE dan implikasinya?

Terima kasih.

  1. Pernahkah Anda melihat ini ?
  2. Itu kemungkinan besar akan dibahas dalam sketsa terpisah. Tapi belum ada rencana.

@arunsrinivasan Tidak, saya belum melihatnya, bagus! Penanda lain

Diperbarui dengan _Keys dan subset_ vignette berbasis pencarian biner cepat.

Sangat bagus. Saya suka sketsa ini. Hanya beberapa komentar cepat untuk dipertimbangkan.

Apa tujuan mengambil alih nama baris jika tidak digunakan? Atau apakah mereka digunakan oleh operator khusus di j (seperti .N, .I, dll.)? Saya pikir mereka digunakan oleh data.table, tetapi tidak sebagai indeks. Saya selalu bingung dengan tujuan memaksa nama baris bernomor.

Mengapa menggunakan unique di kunci pertama ketika hanya mengakses yang kedua? Jika tidak, Anda mendapatkan banyak baris berulang dalam output, bukan? Mungkin jelas, tetapi mungkin berguna untuk mengatakan/menunjukkan apa yang terjadi jika Anda tidak melakukannya.

Apakah semua kunci perlu dikutip? Bahkan yang numerik (bilangan bulat)? Bisakah Anda menggunakan angka sebagai kunci? Ada hal yang harus diperhatikan?

Bagaimana jika kolom kunci Anda memiliki NA di dalamnya? Bisakah Anda mencarinya dan menggantinya (seperti yang Anda lakukan pada contoh di mana Anda mengganti 24 dengan 0?

Mungkin membantu untuk menjelaskan bahwa keyby berlaku untuk _output_ data.table ( ans dalam contoh Anda) dan bukan input data.table ( flights dalam contoh Anda).

Bisakah Anda meneruskan vektor ke kunci? Dengan kata lain, dapatkah Anda membuat airport <- c("LGA", "JFK", "EWR") dan menggunakan airport langsung di i dalam contoh Anda di dekat bagian bawah? Ini mungkin membantu menyiapkan gagasan untuk meneruskan data.table yang berbeda untuk digabungkan.

Salah ketik pada "sesuai" ("correspondong"). Salah satu tanda centang kembali hilang di bagian pemindaian vektor tempat Anda menulis "Indeks baris yang sesuai dengan asal == "LGA" dan tujuan == "TPA"` diperoleh menggunakan subset berbasis kunci."

@markdanese tentang

Mengapa menggunakan unik di kunci pertama saat mengakses hanya yang kedua?

flights[.(unique(origin), "MIA")]

Tidak yakin apakah Anda sangat meminta untuk menyarankan penjelasan yang lebih baik atau Anda tidak mengetahui penggunaan kunci beberapa kolom yang lebih kompleks.
Anda tidak bisa begitu saja menggunakan pencarian biner pada dest ketika kunci Anda adalah c(origin, dest) , Anda harus memiliki c(dest, origin) untuk menggunakan pencarian biner pada dest . Menggunakan .(unique(origin), "MIA") menggunakan pencarian biner, dengan menyediakan semua nilai yang tersedia untuk kolom pertama di kunci dan kemudian nilai selektif ke kolom kedua.
Saya telah membuat ekstensi untuk hanya menggunakan kolom selektif dari kunci. melihat contoh sederhana juga dapat membantu Anda untuk memahami. Ekstensi saya belum siap untuk menjadi PR ke master data.table karena penggunaan memori tidak berskala sebaik mungkin jika dikembangkan menggunakan fungsi data.table internal / dikombinasikan dengan kunci sekunder data.table.

Bisakah Anda menggunakan angka sebagai kunci?

Anda dapat menggunakan numerik sebagai kunci, disebutkan di bagian Keys and their properties .

Ada hal yang harus diperhatikan?

Tidak yakin tapi setNumericRounding mempengaruhi kunci numerik, mungkin layak disebutkan dalam sketsa.

Bagaimana jika kolom kunci Anda memiliki NA di dalamnya? Bisakah Anda mencarinya dan menggantinya?

Ya, is.na() dioptimalkan untuk menggunakan pencarian biner. Coba data.table(a=c(1,NA_real_),b=c("a","b"),key="a")[.(NA_real_), .SD ,verbose=TRUE]

Juga ke @arunsrinivasan , salah ketik di:

temukan nilai yang cocok di

Terima kasih Jan -- itu sangat membantu. Saya menawarkan pertanyaan-pertanyaan itu sebagai hal-hal yang dapat disebutkan secara singkat dalam sketsa untuk membantu pengguna baru memahami apa yang sedang terjadi. Itu adalah hal-hal yang terlintas dalam pikiran (sebagai pengguna yang cukup baru) saat membaca dokumentasi. Saya tidak dapat benar-benar berkontribusi pada kode, jadi saya berharap dapat berkontribusi dengan membantu dokumentasi.

Pada Jum, 23 Jan 2015 jam 20:48, Tandai notifikasi orang [email protected]
menulis:

Sangat bagus. Saya suka sketsa ini. Hanya beberapa komentar cepat untuk
pertimbangan.

Apa tujuan mengambil alih nama baris jika tidak digunakan? Atau apakah
mereka digunakan oleh operator khusus di j (seperti .N, .I, dll.)? Saya pikir mereka
digunakan oleh data.table, tetapi tidak sebagai indeks. Saya selalu
bingung dengan tujuan memaksa nama baris bernomor.

Bagian 1a, tepat di atas Kunci dan propertinya memiliki jawaban untuk ini.
Data.tables _inherit_ dari data.frames.

Mengapa menggunakan unik di kunci pertama saat mengakses hanya yang kedua? Jika kamu
tidak, Anda mendapatkan banyak baris berulang di output, bukan? Mungkin jelas,
tetapi mungkin berguna untuk mengatakan/menunjukkan apa yang terjadi jika Anda tidak melakukannya.

Sekali lagi, ini dijelaskan persis di bawah dalam "apa yang terjadi di sini?". Saya
bahkan merujuk ke bagian sebelumnya di mana saya meletakkan dasar untuk
menjelaskan yang satu ini.

Apakah semua kunci perlu dikutip? Bahkan yang numerik (bilangan bulat)? Bisakah kamu menggunakan
numerik sebagai kunci? Ada hal yang harus diperhatikan?

Ada contoh dengan kolom integer pada 2d. Saya pikir itu
memadai?

Bagaimana jika kolom kunci Anda memiliki NA di dalamnya? Bisakah Anda mencarinya dan menggantinya?
mereka (seperti yang Anda lakukan dalam contoh Anda di mana Anda mengganti 24 dengan 0?

Poin bagus. Itu bedanya dengan pemindaian vektor. Akan mencoba menambahkan ini.

Mungkin membantu untuk menjelaskan bahwa keyby berlaku untuk _output_ data.table (
ans dalam contoh Anda) dan bukan input data.table (penerbangan di . Anda
contoh).

'keyby' sudah dibahas di sketsa pertama. Tapi saya akan melihat apakah ini
bisa ditambahkan.

Bisakah Anda meneruskan vektor ke kunci? Dengan kata lain, bisakah kamu membuat bandara
<- c("LGA", "JFK", "EWR") dan gunakanairportdirectly ini` dalam contoh Anda di dekat
bagian bawah? Ini mungkin membantu mengatur gagasan untuk melewati yang berbeda
data.table untuk penggabungan.

Konten untuk bagian selanjutnya. Begitulah cara kita beralih ke join.

Salah ketik pada "sesuai" ("correspondong"). Salah satu kutu belakang adalah
hilang di bagian pemindaian vektor tempat Anda menulis "Indeks baris
sesuai dengan asal == "LGA" dan tujuan == "TPA"` diperoleh menggunakan kunci
subset berbasis."

Terima kasih.


Balas email ini secara langsung atau lihat di GitHub
https://github.com/Rdatatable/data.table/issues/944#issuecomment -71253738
.

Kerja bagus pada sketsa ini!
Komentar saya mungkin terlambat atau sudah tercakup:

  • Saya ingin melihat berbagai cara/contoh penggunaan baris dan kolom dinamis.
  • Perbandingan yang lebih luas tentang penggabungan dan penggabungan.
  • Cara yang berbeda / lebih kaya untuk menggunakan set . Juga, alangkah baiknya melihat penjelasan mengapa yang berikut ini memberikan kesalahan (lihat di sini ):
for (j in  valCols)
   set(dt_,  
    i = which(is.na(dt_[[j]])),
    j = j, 
    value= as.numeric(originTable[[j]]))

Menambahkan sketsa Reshape ke Wiki .

Fungsionalitas dan sketsa yang luar biasa! Terima kasih Arun

Pada Selasa, 23 Juni 2015, 21:02 Arun [email protected] menulis:

Menambahkan sketsa bentuk ulang
https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-reshape.html
ke Wiki https://github.com/Rdatatable/data.table/wiki/Getting-started.


Balas email ini secara langsung atau lihat di GitHub
https://github.com/Rdatatable/data.table/issues/944#issuecomment -114678716
.

pria untuk patterns akan bagus. sketsa yang bagus

Bukankah reshape2 harus dimuat untuk menggunakan perintah ini? Jika demikian, maka itu harus disebutkan. Saya sangat suka fokus pada "lebar ke panjang" dan "panjang ke lebar". Saya benar-benar membenci sintaks reshape2 (misalnya, saya pikir "make_wide" jauh lebih jelas daripada "dcast"). Untuk alasan ini, saya tidak akan menulis header bagian sebagai "melting data.tables" dan "casting data.tables". Itu hanya masuk akal bagi orang yang akrab dengan paket reshape2. Saya mungkin mulai dengan tajuk yang lebih universal seperti di atas ("panjang ke lebar").

Untuk apa nilainya, saya tidak bisa menjalankan baris pertama sketsa menggunakan sesi R baru dengan hanya memuat data.table. Saya tidak tahu mengapa (mungkin mode harus "w" dan bukan "wb"), tapi
DT = fread("https://raw.githubusercontent.com/wiki/Rdatatable/data.table/data/melt_default.csv")
kembali
Error in download.file(input, tt, mode = "wb") : unsupported URL scheme

Seperti biasa, terima kasih telah melakukan ini. Ini sangat berguna.

@markdanese terima kasih atas umpan balik yang sangat baik.

  1. reshape2 tidak akan diperlukan dari data.table v1.9.6 . Diperbarui ini di sketsa juga.
  2. Menambahkan 'lebar ke panjang' dan 'panjang ke lebar' ke judul, dan tempat lain untuk menghindari kebingungan bagi orang yang baru mengenal topik ini.
  3. Fungsi https di fread diimplementasikan dalam versi devel. Jadi Anda belum dapat menjalankan kode itu dengan v1.9.4 . Perbarui, atau tunggu sebentar :-).

Terima kasih atas dorongan Anda.

@jangorecki patterns() tidak akan diekspor. Penggunaan akan diperluas untuk [.data.table akan digunakan untuk memilih kolom, := , .SDcols dll.

@arunsrinivasan masih manual untuk patterns dapat membantu, dengan cara yang sama ada satu untuk := . Hanya karena banyak orang (menurut saya) menggunakan ?fun untuk memahami kode yang mereka baca.

Dalam sketsa _join_ mungkin ada baiknya untuk menambahkan contoh SQL yang sesuai dari gabungan data.table sehingga dapat lebih mudah diambil untuk db guys.
Contoh pernyataan SQL yang sesuai dapat ditemukan misalnya di SO Bagaimana cara menggabungkan (menggabungkan) bingkai data (dalam, luar, kiri, kanan)? .

Juga akan keren untuk memiliki beberapa sketsa "Pengungsi" --

  • data.table untuk pengguna Stata
  • data.table untuk pengguna SQL
  • data.table untuk pengguna Matlab
  • data.table untuk Python / pandas pengguna
  • bahkan data.table untuk pengguna dplyr

dll. Seperti panduan memulai cepat, tetapi berorientasi pada emigran.

Menambahkan sketsa Secondary indices and auto indexing . Ini akan memungkinkan transisi yang mulus dari himpunan bagian ke gabungan untuk sketsa berikutnya yang akan saya kerjakan.

@arunsrinivasan tidak lebih tepat untuk tidak menggunakan _secondary_ dalam kaitannya dengan _indices_? itu digunakan untuk _keys_ di mana itu penting. Sekarang tampaknya menjadi berlebihan setelah kita beralih ke penamaan _index_.

@jangorecki Saya pikir "sekunder" berguna untuk hubungannya dengan kunci (utama), mungkin:

Penyortiran sekunder

Apakah deskripsi yang lebih baik?

tetapi kata _index_ sudah digunakan, tampilannya lebih bagus daripada _pengurutan sekunder_ :)

Jadi Anda hanya akan menamakannya "pengindeksan otomatis"? IMO "penyortiran sekunder dan pengindeksan otomatis" terasa lebih informatif

_auto_ entah bagaimana bisa menyesatkan, karena indeks harus berfungsi untuk membuat indeks _auto_, dan juga untuk penggunaan indeks yang dibuat secara manual - #1422 mengatasi batasan saat ini dalam hal ini.

Jadi begitu. Saya masih melewatkan alternatif pilihan Anda -- hanya "Indeks"?

tidak sempurna tetapi lebih disukai daripada _indeks sekunder_

Saya sangat menyukai sketsa terbaru ini. Satu-satunya pemikiran saya adalah mungkin akan membantu untuk menyebutkan jenis operasi apa yang menyebabkan indeks dihapus. Dari pengujian saya, tampaknya hampir semua hal yang mengubah jumlah baris, atau operasi apa pun yang melibatkan kolom yang diindeks.

Saya pikir contoh "on" sangat membantu.

@markdanese poin bagus, akan ditambahkan.

Terima kasih atas sketsa yang diperbarui dengan rilis v1.9.8.
"Semantik Referensi" mengacu pada fungsi copy() dan kemampuan barunya untuk membuat salinan dangkal (terutama di dalam fungsi, sesuatu yang sangat saya minati):

"Namun kami dapat meningkatkan fungsionalitas ini lebih lanjut dengan menyalin dangkal daripada menyalin dalam. Faktanya, kami sangat ingin menyediakan fungsionalitas ini untuk v1.9.8 . Kami akan menyentuhnya lagi di sketsa desain data.table."

Tetapi sketsa desain tidak ada dan tautannya mengarah ke masalah lama. Manual referensi tidak memberikan informasi lebih lanjut tentang copy() daripada yang disediakan dalam sketsa. Vignette lainnya tidak memberikan informasi apa pun tentang copy .

Apakah sketsa ini akan segera tersedia?

+1 untuk sketsa internal. Saya (dan saya kira beberapa orang lain) cukup tertarik untuk berkontribusi sedikit di sisi C, tetapi saya sedikit terintimidasi oleh (seperti berdiri) 35k baris kode C ... cukup kurva belajar untuk 'pergi itu sendiri' -- sebuah intro ke internal bisa melakukan keajaiban!

Ingin bergabung dan menanyakan apakah kontribusi ke sketsa diterima dari kontributor non-kode (seperti saya). Saya sangat tertarik untuk berkontribusi pada sketsa gabungan karena pada awalnya saya memiliki sedikit masalah dengannya dan dipandu ke solusi dari jawaban Arun di Stackoverflow, dan saya ingin beberapa panduan tentang cara melakukannya, jika diizinkan.

@arunsrinivasan Saya melihat bahwa Anda ada benarnya IDateTime vignette . Mungkin itu bisa dimasukkan dalam sketsa yang lebih umum yang disarankan oleh @jangorecki : sketsa: deret waktu - pengamatan terurut ?

Selain itu, saya sedang menyiapkan draf pertama tentang beberapa topik yang disarankan oleh jan . Mungkin bagian-bagiannya mungkin relevan untuk sketsa bergabung juga? Saya senang berbagi jika ada yang merasa berguna.

@zeomal kontribusi seperti itu akan sangat berharga dan sangat dihargai!

@MichaelChirico , terima kasih. @Henrik-P, akankah penjelasan singkat Anda tentang penggabungan normal akan komprehensif - yaitu apakah fokus Anda akan lebih pada rangkaian waktu? Jika tidak, saya bisa mulai mengerjakannya - saya belum pernah menggunakan rolling join, jadi tidak ada pengetahuan di sana. :)

@zeomal Semoga saya bisa segera mengupload draf pertama, jadi Anda bisa melihatnya. Dalam draf saya, saya memberikan contoh sederhana dari gabungan "normal" pada satu variabel, waktu, di mana ada baris yang tidak cocok. Saya menggunakan nomatch = NA . (mungkin juga contoh cepat dengan nomatch = NULL )

Ide saya adalah bahwa penggabungan sederhana ini dapat memberikan konteks dan perasaan untuk masalah tersebut, yang kemudian saya bahas lebih menyeluruh di bagian berikut tentang penggabungan bergulir dan non-equi et al.

Terima kasih banyak atas kesediaan Anda untuk berkontribusi! .

Saya punya pertanyaan tentang bergabung dengan referensi, sambil menyiapkan sketsa. X[Y, new_col := old_col] melakukan sesuatu yang mirip dengan gabungan kiri tradisional pada X . Namun, jika ada beberapa kecocokan dengan kunci Y di X , hanya nilai pencocokan terakhir (atau pertama?) yang dipertahankan. Apakah ini secara eksplisit didokumentasikan di suatu tempat? Saya telah mencoba mencari ini kembali ketika saya menemukannya, tetapi harus menggunakan pemahaman saya tentang memperbarui dengan referensi karena alasannya. Untuk contoh yang dapat direproduksi,

> X = data.table(a = c(1, 2, 3), m = c("a", "b", "c"))
> Y = data.table(b = c(1, 1, 4), n = c("x", "y", "z"))
> X[Y, new_col := i.n, on = "a == b"]
   a m new_col
1: 1 a       y
2: 2 b    <NA>
3: 3 c    <NA>

# an ideal left join - expected behaviour per a new user, given below
# not possible because updating row by reference isn't implemented
   a m new_col
1: 1 a       x
1: 1 a       y
2: 2 b    <NA>
3: 3 c    <NA>

Ini adalah perilaku yang diharapkan, tetapi tidak sepenuhnya mudah bagi pengguna baru. mult juga tidak mempengaruhi output. Adakah saran tentang bagaimana saya mendokumentasikan ini? Tambahkan merge sebagai solusi untuk join kiri yang tepat?

@zeomal silakan kirim pertanyaan Anda di masa mendatang tentang bergabung dengan sketsa di edisi # 2181 sebagai gantinya. Tampaknya ke tempat yang lebih baik. Itu didokumentasikan dalam set .

@zeomal Jika Anda ingin memeriksa seberapa singkat perawatan saya di normal (equi) bergabung, saya hanya ingin memberi tahu Anda bahwa saya memposting PR di sketsa deret waktu .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat