Cara menggunakan .SD dalam paket R data.table

Untuk beberapa pengguna data.table, "dot-SD" adalah sedikit misteri. Tetapi pencipta data.table Matt Dowle mengatakan kepada saya bahwa sebenarnya ini cukup sederhana: Anggap saja sebagai simbol yang mewakili "setiap kelompok". Mari kita lihat beberapa contoh.

Saya memiliki kumpulan data perjalanan bersepeda harian dari sistem berbagi sepeda di wilayah Boston. Jika Anda ingin mengikuti, Anda dapat mengunduh file CSV dari tautan di bagian bawah artikel ini.

Saya akan memuat data.table dan mengimpor file CSV saya menggunakan fread()fungsi data.table . Pada kode di bawah ini, saya menyimpan data ke dalam tabel data yang disebut mydt.

perpustakaan (data.table)

mydt <- fread ("daily_cycling_trips_by_usertype.csv")

Selanjutnya, saya sarankan mencetak enam baris pertama dengan head(mydt)untuk melihat seperti apa datanya. Anda akan melihat bahwa data memiliki kolom untuk tanggal, jenis pengguna (pelanggan atau pelanggan perjalanan tunggal), jumlah perjalanan, tahun, dan bulan tanggal mulai untuk membantu dengan total menurut bulan.

Contoh pertama yang disarankan Matt: Cetak beberapa baris pertama tabel data yang dikelompokkan berdasarkan jenis pengguna . (Kami memfilter 12 baris pertama hanya untuk memudahkan melihat hasilnya). 

mydt [1:12, cetak (.SD), menurut = usertype]

print()mengulangi setiap grup dan dicetak dua kali terpisah, satu untuk setiap jenis pengguna. Masalahnya, bagaimanapun, adalah saya tidak tahu mana kelompok pengguna pelanggan dan mana kelompok pengguna pelanggan. Kolom "oleh" tidak dicetak. Untungnya, Matt menunjukkan sedikit trik untuk itu.

Jika Anda akrab dengan mydt[i, j, by]sintaks data.table, ada tiga bagian untuk notasi braket setelah nama tabel data: i, j, dan by. iuntuk memfilter baris, juntuk apa yang ingin Anda lakukan, dan bycara Anda ingin mengelompokkan data.

Sebagai contoh: 

mydt [1:12, {print (.SD)}, oleh = usertype]

Pada baris kode di atas, saya baru saja memberi tanda kurung kurawal di sekeliling jbagian. Itu akan membiarkan saya menambahkan beberapa ekspresi R di dalam jargumen.  Sekarang masih sama seperti sebelumnya: tidak ada nama tipe pengguna.

Tapi di baris berikutnya kode ini, lihat pernyataan R saya menambahkan (baik, Matt mengatakan kepada saya untuk menambahkan): print(.BY).

mydt [1:12, {print (.BY); print (.SD)}, dengan = usertype]

.BYadalah simbol data.table khusus yang menyimpan nilai by- kolom atau kolom apa yang saya kelompokkan.

Jika Anda menjalankan kode ini, Anda akan mendapatkan nama dari setiap variabel pengelompokan bersama dengan hasil cetakan.

Sharon Machlis,

Jadi itu contoh yang sangat mendasar. Saya menduga Anda mungkin ingin melakukan sesuatu yang sedikit lebih menarik .SDdaripada mencetak. Selanjutnya, mari kita lihat meringkas data menurut grup, menghitung hari mana yang memiliki perjalanan paling banyak setiap bulan tahun ini.

Baris kode ini memiliki semuanya:

mydt [Year == "2019", .SD [which.max (Trips)], oleh = MonthStarting]

The iargumen pertama dalam kurung filter untuk setiap baris di mana tahun ini 2019. jArgumen adalah bagian yang menarik untuk .SD. Anggap saja .SDmerujuk ke setiap grup data Anda. Atau seperti kata Matt, “Kamu lakukan joleh by. Seperti forlingkaran. "

Bagaimana jika Anda ingin melihat hasil maksimal untuk setiap bulan dan jenis pengguna? Cukup tambahkan kolom lain ke byargumen (ketiga):

mydt [Tahun == "2019", .SD [yang.max (Perjalanan)],

oleh =. (MonthStarting, usertype)]

Ada beberapa cara untuk mengekspresikan pengelompokan dengan lebih dari satu kolom dalam data.table. Salah satu caranya adalah dengan titik sebelum nama kolom tanpa tanda kutip, seperti di atas. Cara lainnya adalah dengan menggunakan listsebagai pengganti titik, misalnya: 

mydt [Tahun == "2019", .SD [yang.max (Perjalanan)],

oleh = list (MonthStarting, usertype)]

Anda juga dapat menggunakan vektor dasar R konvensional dengan tanda petik di sekeliling setiap nama kolom. 

mydt [Tahun == "2019", .SD [yang.max (Perjalanan)],

oleh = c ("MonthStarting", "usertype")]

Untuk tips R lainnya, buka halaman video "Do More With R" atau lihat playlist YouTube "Do More With R".

unduh Contoh file CSV Data Perjalanan Sepeda untuk menyertai artikel dan video "Cara menggunakan .SD dalam paket R data.table" saya Sharon Machlis

Sampai jumpa di episode selanjutnya!