Split-Apply-Combine
Типова задача в data science — розбити датафрейм за певною групою, застосувати перетворення до кожної групи, а потім зібрати все назад в один датафрейм. У R цей підхід настільки поширений, що має назву split-apply-combine. У курсі Intermediate R for Finance ви розглянете низку таких задач і корисних функцій для їх розв'язання, а зараз виконаємо простий приклад.
Припустімо, що для датафрейму cash ви хочете подвоїти cash_flow для компанії A та потроїти для компанії B:
grouping <- cash$company
split_cash <- split(cash, grouping)
# Доступ до стовпця cash_flow кожного елемента списку:
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)
Зверніть увагу, як саме відбувається доступ до стовпця cash_flow. Перший $ звертається до елемента A списку split_cash. Другий $ звертається до стовпця cash_flow датафрейму в A.
Ця вправа є частиною курсу
Вступ до R для фінансів
Інструкції до вправи
- У вашому розпорядженні є датафрейм
split_cash. Також доступнийgrouping, який використовувався для розбиттяcash. - Виведіть
split_cash, щоб переглянути список. - Виведіть стовпець
cash_flowдля компаніїBуsplit_cash. - На жаль, ви дізналися, що компанія A припинила діяльність. Установіть
cash_flowдля компанії A рівним0. - Використайте
grouping, щоб виконатиunsplit()для датафреймуsplit_cash. Присвойте результат доcash_no_A. - Нарешті, виведіть
cash_no_A, щоб побачити змінений датафрейм.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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