R 使用潮汐仪、反光仪和反光骨的闪亮应用程序。如何集成和渲染细节级别数据

R 使用潮汐仪、反光仪和反光骨的闪亮应用程序。如何集成和渲染细节级别数据,r,shiny,R,Shiny,我是一个新的R用户,我刚刚使用tidymetrics、shinymetrics和shinybones(借助于David Robinson和Kaelen Medeiros提供的一些非常出色的例子)构建了我的第一个闪亮应用程序。该应用程序目前使用表达式调用由潮汐测量创建的摘要级别度量,以呈现图表。当然,这意味着我只提供了汇总级别的数据来输入或输出图表 我希望内置向下钻取功能,最重要的是,当我从过滤的图表中单击“下载CSV”时,我希望能够在显示的汇总总数后面输出详细程度数据 问题:有人知道如何在保留汇

我是一个新的R用户,我刚刚使用tidymetrics、shinymetrics和shinybones(借助于David Robinson和Kaelen Medeiros提供的一些非常出色的例子)构建了我的第一个闪亮应用程序。该应用程序目前使用表达式调用由潮汐测量创建的摘要级别度量,以呈现图表。当然,这意味着我只提供了汇总级别的数据来输入或输出图表

我希望内置向下钻取功能,最重要的是,当我从过滤的图表中单击“下载CSV”时,我希望能够在显示的汇总总数后面输出详细程度数据

问题:有人知道如何在保留汇总tidymetrics/shinymetrics/shinybones结构附带的格式和功能的同时返回到细节级数据吗

我目前的解决方案包括:

1) .Rmd文件-读取/格式化详细数据,并使用潮汐测量“创建”度量

---
title: "Metrics"
owner:  me
name: dashData
metrics:
  usd_total_costs:
    title: Total Costs
    description: Total costs
  total_counts:
    title: Number of transactions
    description: Total number of transactions
dimensions:
  type:
    title: Type
    description: Type of transaction
  group:
    title: Group
    description: Responsible Group

---
    
```{r setup, include=FALSE}
knitr::opts_chunk$set(
  warning = FALSE,
  message = FALSE,
  echo = FALSE
)
```  
```{r load libraries}
library(tidyverse)
library(tidymetrics)
```

```{r import sample data}
dashDetail <- structure(list(type = c("Ocean", "Ground", "Ground", "Ground", 
"Ocean", "Air", "Ground", "Direct Booking", "Ground", "Ground", 
"Ground", "Ground", "Ground", "Ground", "Ground", "Ocean", "Air", 
"Air", "Ocean", "Ground"), group = c("HD", "XM", 
"HD", "YD", "WB", "HB", "YD", "AD", "HB", "AC", 
"HB", "MD", "HH", "XM", "AC", "HB", "HF", "AD", 
"KT", "MD"), date = structure(c(18189, 18295, 18571, 18102, 
18449, 18563, 18590, 18316, 18431, 18565, 18290, 18323, 18681, 
18311, 18347, 18436, 18514, 18614, 18155, 18311), class = "Date"), 
    item = c("1XXX", "6XBX", "1XDX", 
    "7XXX", "8XHX", "9XXC", 
    "4XXX", "0TTA", "WLXX", 
    "LXDX", "2XXX", "2XCX", 
    "1XBX", "6XXX", "06VXX", 
    "8MM2", "5XXX", "2MMA", 
    "2XXX", "JZGX"),cost = c(2582.49, 858.33, 290.19, 
    2528, 220, 1102.4, 101.37, 16.7, 7399, 8.59, 13.79, 852.6, 
    8333, 6.12, 4.45, 736.37, 54.47, 4163.64, 
    21.27, 6477)), row.names = c(76379L, 
26372L, 122281L, 5237L, 65969L, 139921L, 115782L, 84332L, 93330L, 
112516L, 24675L, 27860L, 122772L, 48470L, 23941L, 66404L, 97592L, 
130089L, 9805L, 56969L), class = "data.frame")
```
  
```{r summarize}
dashData <- dashDetail %>%
  cross_by_dimensions(type, group) %>%
  cross_by_periods(c("day", "week", "month", "quarter", "year")) %>%
  summarize(usd_total_costs = sum(cost, na.rm = TRUE),   
                   total_counts = sum(n())) 
```

```{r create_metrics}
dash_metrics <- create_metrics(dashData)
```

```{r save_metrics}
saveRDS(dash_metrics, ("metrics.RDS"))
---
标题:“指标”
店主:我
名称:dashData
韵律学:
美元总成本:
标题:总成本
说明:总费用
总数:
标题:交易数量
说明:交易总数
尺寸:
类型:
标题:类型
说明:交易类型
组:
标题:团体
说明:负责小组
---
```{r设置,include=FALSE}
knitr::opts_chunk$set(
警告=错误,
消息=FALSE,
回声=假
)
```  
```{r加载库}
图书馆(tidyverse)
图书馆(潮汐测量)
```
```{r导入样本数据}
dashDetail%
按时段交叉(c(“日”、“周”、“月”、“季度”、“年”))%>%
汇总(美元=总成本=总成本(成本,不适用rm=真实),
总数=总和(n())
```
```{r创建_度量}
破折号度量

   
2)site.yaml file - calls each of the created metrics 
    
    name: Dashboard
    sidebar:
      - text: Metrics
        icon: bar-chart-o
        tabs:
          - text: Total Costs
            module:
               metric_panel:
                 metric: !expr Metrics$NA_NA_usd_total_costs
          - text: Total Counts
            module:
               metric_panel:
                 metric: !expr Metrics$NA_NA_total_counts


3)app.R file

    # Load Libraries -----
    library(shiny)
    library(shinydashboard)
    library(shinybones)
    library(shinymetrics)
    
    # Load Utilities -----
    source_dirs('utils')
    source_dirs('components')
    source_dirs('pages')
    
    # Global Data ----
    Metrics <- readRDS("metrics.RDS")
    
    # Configuration
    options("yaml.eval.expr" = TRUE)
    CONFIG <- yaml::read_yaml('_site.yml')
    
    # UI ----
    ui <- function(request){
      dashboardPage(
        # Header ----
        dashboardHeader(title = CONFIG$name),
    
        # Sidebar ----
        dashboardSidebar(
          sb_create_sidebar(CONFIG, Metrics)
        ),
    
        # Body -----
        dashboardBody(
          sb_create_tab_items(CONFIG, Metrics)
        )
      )
    }
    
    # Server -----
    server <- function(input, output, session){
      sb_call_modules(CONFIG, Metrics)
    }
    
    # Run App ----
    shinyApp(ui = ui, server = server, enableBookmarking = 'url')