Split-Apply-Combine
Ett vanligt problem inom datavetenskap är att dela upp en dataram efter en gruppering, tillämpa någon transformation på varje grupp och sedan sätta ihop delarna igen till en enda dataram. Det här är en så pass vanlig typ av problem i R att det fått ett eget namn: split-apply-combine. I Intermediate R for Finance utforskar du ett antal sådana problem och funktioner som är användbara för att lösa dem – men låt oss börja med ett enkelt exempel.
Anta att du för dataramen cash vill dubblera cash_flow för företag A och tredubbla den för företag B:
grouping <- cash$company
split_cash <- split(cash, grouping)
# We can access each list element's cash_flow column by:
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)
Lägg märke till hur du kommer åt kolumnen cash_flow. Det första $ används för att komma åt elementet A i listan split_cash. Det andra $ används för att komma åt kolumnen cash_flow i dataramen som finns i A.
Den här övningen är en del av kursen
Introduktion till R för finans
Övningsinstruktioner
- Dataramen
split_cashfinns tillgänglig. Det gör också dengroupingsom användes för att dela uppcash. - Skriv ut
split_cashför att få en överblick över listan. - Skriv ut kolumnen
cash_flowför företagBisplit_cash. - Tyvärr har du fått veta att företag A har gått i konkurs. Sätt
cash_flowför företag A till0. - Använd
groupingför att anropaunsplit()på dataramensplit_cash. Tilldela resultatet tillcash_no_A. - Skriv slutligen ut
cash_no_Aför att se den uppdaterade dataramen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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