как добавить промежуточный итог и итоговый столбец в r - PullRequest
0 голосов
/ 14 мая 2019

Я ищу примеры или идеи о том, как я могу отобразить таблицу данных в.Rmd документ, который сгруппировал итоги на нескольких уровнях.Итак, в следующем примере дата, имена, кол-во, ставка и значение имеют общее значение на уровне предметов.

Ниже я только что создал пример для иллюстрации того, что я имею в виду:

names <- c('note','pen','book','note','pen','book')
qty <- c(150, 100, 200, 50, 150, 75)
date <- c('1-mar-2019','1-mar-2019','1-mar-2019', '2-mar-2019','2-mar-2019','2-mar-2019')
rate <- c(10, 5, 20, 10, 5, 20)

stationary <- data.frame(date, names, qty, rate)

stationary$value = stationary$qty*stationary$rate

и я хочу, чтобы мой результат был таким, как показано ниже,

введите описание изображения здесь

1 Ответ

0 голосов
/ 14 мая 2019

РЕДАКТИРОВАТЬ: ОБНОВЛЕННЫЙ КОД ДЛЯ ФОРМАТИРОВАНИЯ

Использование dplyr

library(tidyverse)

stationary <- stationary %>% 
    mutate(value = rate*qty)

stationary1 <- stationary %>%
    group_by(names) %>% 
    summarise(qty = sum(qty), value = sum(value)) %>% 
    ungroup() %>% 
    mutate(names = paste0(names, " total")) %>% 
    bind_rows(stationary)

stationary1 %>%
    filter(grepl("total", names)) %>%
    summarise(qty = sum(qty),
              value = sum(value)) %>% 
    mutate(names = "Total (Grand)") %>% 
    bind_rows(stationary1) %>% 
    arrange(names) %>% 
    select(date, names, qty, rate, value) %>% 
    mutate_all(as.character) %>%
    replace_na(list(date = "", names = "", qty = "", rate = "", value = ""))

Результаты выглядят так:

# A tibble: 10 x 5
   date       names         qty   rate  value
   <chr>      <chr>         <chr> <chr> <chr>
 1 1-mar-2019 book          200   20    4000 
 2 2-mar-2019 book          75    20    1500 
 3 ""         book total    275   ""    5500 
 4 1-mar-2019 note          150   10    1500 
 5 2-mar-2019 note          50    10    500  
 6 ""         note total    200   ""    2000 
 7 1-mar-2019 pen           100   5     500  
 8 2-mar-2019 pen           150   5     750  
 9 ""         pen total     250   ""    1250 
10 ""         Total (Grand) 725   ""    8750 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...