Ваш выходной формат больше похож на сводную таблицу Excel или таблицу для отчета, чем на фрейм данных R для анализа. Особенно с итогами строк и столбцов. Однако в R имеется гораздо больше инструментов для работы с аккуратными прямоугольными данными angular, чем для создания сводных таблиц или таблиц отчетов с промежуточными строками. Поэтому вам может быть лучше выбрать другой инструмент (например, Excel), который более естественно создает искомую структуру вывода.
Если вы решили сделать это в R, тогда простой отправной точкой будет mutate
, ifelse
и summarise
что-то вроде следующего:
df %>% mutate(L = ifelse(Flag == "L",1,0),
K = ifelse(Flag == "K",1,0),
# etc for Flag) %>%
mutate(sub_status = NA) %>%
mutate(sub_status = ifelse(!is.na(Flag) & reps_rt == 0, "a", sub_status),
sub_status = ifelse(is.na(Flag) & reps_rt != 0, "b", sub_status),
# etc for sub-status) %>%
mutate(value_class = ifelse(0 <= Value & Value <= 15000, "0-15000", "15000-50000")) %>%
group_by(Date, status, sub_status, value_class) %>%
summarise(L = sum(L),
K = sum(K),
# etc
count = n())
Затем вам придется отфильтровать до интересующей даты и переставить значения вокруг, чтобы соответствовать желаемому формату.