Mulai sekarangMulai gratis

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

Lihat Kursus

Instruksi latihan

  • Data frame split_cash tersedia untuk Anda. Selain itu, grouping yang digunakan untuk membagi cash juga tersedia.
  • Cetak split_cash untuk melihat isinya sebagai list.
  • Cetak kolom cash_flow untuk perusahaan B di dalam split_cash.
  • Sayangnya, Anda mengetahui bahwa perusahaan A gulung tikar. Setel cash_flow untuk perusahaan A menjadi 0.
  • Gunakan grouping untuk melakukan unsplit() pada data frame split_cash. Tetapkan hasilnya ke cash_no_A.
  • Terakhir, cetak cash_no_A untuk 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
Edit dan Jalankan Kode