Split-Apply-Combine
Masalah umum dalam data science adalah membagi data frame berdasarkan suatu pengelompokan, menerapkan transformasi pada tiap kelompok, lalu menggabungkan kembali bagian-bagian tersebut menjadi satu data frame. Kelas masalah ini begitu umum di R sehingga diberi nama split-apply-combine. Dalam Intermediate R for Finance, Anda akan mempelajari sejumlah masalah dan fungsi yang berguna untuk menyelesaikannya, tetapi untuk sekarang, mari kita lihat contoh sederhana.
Misalkan, untuk data frame cash, Anda ingin menggandakan cash_flow untuk perusahaan A, dan melipatgandakannya tiga kali untuk perusahaan B:
grouping <- cash$company
split_cash <- split(cash, grouping)
# Kita dapat mengakses kolom cash_flow dari setiap elemen list dengan:
split_cash$A$cash_flow
[1] 1000 4000 550
split_cash$A$cash_flow <- split_cash$A$cash_flow * 2
split_cash$B$cash_flow <- split_cash$B$cash_flow * 3
new_cash <- unsplit(split_cash, grouping)
Perhatikan lagi bagaimana Anda mengakses kolom cash_flow. Tanda $ pertama digunakan untuk mengakses elemen A dari list split_cash. Tanda $ kedua digunakan untuk mengakses kolom cash_flow dari data frame di dalam A.
Latihan ini merupakan bagian dari kursus
Pengantar R untuk Keuangan
Instruksi latihan
- Data frame
split_cashtersedia untuk Anda. Selain itu,groupingyang digunakan untuk membagicashjuga tersedia. - Cetak
split_cashuntuk melihat isinya sebagai list. - Cetak kolom
cash_flowuntuk perusahaanBdi dalamsplit_cash. - Sayangnya, Anda mengetahui bahwa perusahaan A gulung tikar. Setel
cash_flowuntuk perusahaan A menjadi0. - Gunakan
groupinguntuk melakukanunsplit()pada data framesplit_cash. Tetapkan hasilnya kecash_no_A. - Terakhir, cetak
cash_no_Auntuk melihat data frame yang telah dimodifikasi.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# Print split_cash
# Print the cash_flow column of B in split_cash
split_cash$___$___
# Set the cash_flow column of company A in split_cash to 0
split_cash$___$___ <- ___
# Use the grouping to unsplit split_cash
cash_no_A <- unsplit(___, ___)
# Print cash_no_A