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
Instrukcje do ćwiczenia
- Ramka danych
split_cashjest już dostępna. Dostępna jest też zmiennagrouping, której użyto do podziałucash. - Wyświetl
split_cash, żeby przyjrzeć się liście. - Wyświetl kolumnę
cash_flowdla firmyBwsplit_cash. - Niestety okazało się, że firma A zbankrutowała. Ustaw wartość
cash_flowdla firmy A na0. - Użyj zmiennej
grouping, aby scalićsplit_cashz powrotem za pomocąunsplit(). Wynik przypisz docash_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