r блестящая линейчатая диаграмма ggplot2 на основе выбранного столбца - PullRequest
0 голосов
/ 25 октября 2018

В моем блестящем приложении я хотел бы построить гистограмму с накоплением на основе показателей, выбранных в раскрывающемся меню.

У меня есть 3 числовых столбца: номер клиента, номер транзакции и сумма_платы.

В раскрывающемся меню (тип метрики) я могу выбрать любой из них.Моя гистограмма изменится соответственно.

Один из способов, предложенных в Интернете, - поместить все метрики в один столбец и отфильтровать строки, принадлежащие этим метрикам.

Я пытаюсь разделить метрики,Я выбираю столбцы факторов и столбцы показателей и изменяю имя столбца показателей.

Я получаю сообщение об ошибке «Столбец weight_metrics должен иметь уникальное имя».Я не знаю, что случилось.

Я новичок в сиянии.Мы будем благодарны за любые предложения.

С уважением,

Bing

==================================

Вот упрощенные коды:

library(shiny)
library(ggplot2)
library(dplyr)
library(DT)

summary_1 <- read.csv("summary_1.csv")

ui <- fluidPage(
  selectInput(inputId = 'var_type', label = NULL,
              choices = c("Gender", "Age Group"),
              selected = "Overall",
              width = '250px'),

  selectInput(inputId = 'metrics_type', label = NULL,
              choices = c("# Customer" = "numb_ctm", 
                          "# Transaction" = "numb_trn", 
                          "$ Cost" = "tot_amt_pd"),
              selected = "tot_amt_pd",
              width = '250px'),

  DT::dataTableOutput("monthly_sum"),
  plotOutput("monthly_comparison")
)

server <- function(input,output) {

  data1 <- reactive({
    temp <- summary_1 %>%
      select(din_month, category, input$metrics_type)

    colnames(temp)[-1] <- "weight_metrics"

    temp <- temp %>%
      filter(var_type = input$var_type)
  })

  output$monthly_sum <- DT::renderDataTable(
    DT::datatable(
      data1(),
      options = list(order = list(1, 'desc')),
      rownames = FALSE,
      colnames = c('Month', 'Group', 'metrics_type')
    )
  )

  output$monthly_comparison <- renderPlot({
      ggplot(data1(), aes(din_month)) + 
      geom_bar(aes(weight = weight_metrics, fill = category))  }
  )
}

shinyApp(ui, server)

Данные здесь:

var_type,category,month,numb_ctm,numb_trn,tot_amt_pd
Age Group,G1: 24 to 37 year old,2018-01-01,896,1136,24701
Age Group,G2: 37 to 42 year old,2018-01-01,99,758,41972
Age Group,G2: 43 to 58 year old,2018-01-01,210,2180,44262
Age Group,G4: 59 to 74 year old,2018-01-01,1025,1408,198467
Age Group,G1: 24 to 37 year old,2018-02-01,27,1681,22071
Age Group,G2: 37 to 42 year old,2018-02-01,297,372,74920
Age Group,G2: 43 to 58 year old,2018-02-01,698,137,74063
Age Group,G4: 59 to 74 year old,2018-02-01,1172,2764,41573
Age Group,G1: 24 to 37 year old,2018-03-01,951,428,3584
Age Group,G2: 37 to 42 year old,2018-03-01,734,896,66483
Age Group,G2: 43 to 58 year old,2018-03-01,185,1129,24417
Age Group,G4: 59 to 74 year old,2018-03-01,1501,847,48692
Age Group,G1: 24 to 37 year old,2018-04-01,275,228,55665
Age Group,G2: 37 to 42 year old,2018-04-01,510,1374,33090
Age Group,G2: 43 to 58 year old,2018-04-01,781,986,122279
Age Group,G4: 59 to 74 year old,2018-04-01,0,1396,49184
Age Group,G1: 24 to 37 year old,2018-05-01,240,1438,46586
Age Group,G2: 37 to 42 year old,2018-05-01,504,381,46717
Age Group,G2: 43 to 58 year old,2018-05-01,358,813,132963
Age Group,G4: 59 to 74 year old,2018-05-01,659,1450,32746
Age Group,G1: 24 to 37 year old,2018-06-01,124,1321,3734
Age Group,G2: 37 to 42 year old,2018-06-01,619,30,15391
Age Group,G2: 43 to 58 year old,2018-06-01,195,1265,50682
Age Group,G4: 59 to 74 year old,2018-06-01,489,1987,132992
Gender,F,2018-01-01,2045,5043,151696
Gender,M,2018-01-01,497,2793,50950
Gender,F,2018-02-01,974,205,184919
Gender,M,2018-02-01,2177,3949,159286
Gender,F,2018-03-01,43,46,9828
Gender,M,2018-03-01,927,520,40851
Gender,F,2018-04-01,288,4875,51426
Gender,M,2018-04-01,778,1994,74220
Gender,F,2018-05-01,1915,4693,258544
Gender,M,2018-05-01,1736,3550,17810
Gender,F,2018-06-01,346,4311,103181
Gender,M,2018-06-01,1157,907,83196

1 Ответ

0 голосов
/ 25 октября 2018

Я нахожу свою ошибку:

Я изменяю имя столбца, используя colnames(temp)[-1] <- "weight_metrics"

Эта строка фактически меняет все столбцы, кроме имени последнего, на weight_metrics.: - (

Я изменил его на

names(temp)[length(names(temp))]<-"weight_metrics"

Теперь код работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...