Zacznij terazZacznij za darmo

Podziel-zastosuj-połącz

Typowym zagadnieniem w data science jest podział ramki danych według grupowania, zastosowanie pewnej transformacji do każdej grupy, a następnie ponowne scalenie tych fragmentów w jedną ramkę danych. Ten schemat działania jest w R tak powszechny, że nadano mu nazwę split-apply-combine (podziel-zastosuj-połącz). W kursie Intermediate R for Finance poznasz wiele tego rodzaju zagadnień oraz funkcji pomocnych przy ich rozwiązywaniu. Na razie zróbmy prosty przykład.

Załóżmy, że dla ramki danych cash chcesz podwoić wartość cash_flow dla firmy A i potroić ją dla firmy B:

grouping <- cash$company
split_cash <- split(cash, grouping)

# Dostęp do kolumny cash_flow w każdym elemencie listy:
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)

Zwróć uwagę na sposób dostępu do kolumny cash_flow. Pierwszy $ służy do pobrania elementu A z listy split_cash. Drugi $ umożliwia dostęp do kolumny cash_flow w ramce danych znajdującej się w elemencie A.

To ćwiczenie jest częścią kursu

Wprowadzenie do R dla finansów

Zobacz kurs

Instrukcje do ćwiczenia

  • Ramka danych split_cash jest już dostępna. Dostępna jest też zmienna grouping, której użyto do podziału cash.
  • Wyświetl split_cash, żeby przyjrzeć się liście.
  • Wyświetl kolumnę cash_flow dla firmy B w split_cash.
  • Niestety okazało się, że firma A zbankrutowała. Ustaw wartość cash_flow dla firmy A na 0.
  • Użyj zmiennej grouping, aby scalić split_cash z powrotem za pomocą unsplit(). Wynik przypisz do cash_no_A.
  • Na koniec wyświetl cash_no_A, żeby zobaczyć zmodyfikowaną ramkę danych.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
Edytuj i uruchom kod