ピカピカのアプリを作ろうとしています。原則は単純である必要があります。入力ごとに1つのテーブルを表示します。これが私のコードです。アプリは全データベースの合計を表示しますが、私はそれを望んでいません。
ui <- fluidPage(
titlePanel("Casco Monthly"),
sidebarLayout(
sidebarPanel(
h2(strong("Shiny App"),style = "color:blue"),
img(src = "groupama.jpg", height = 100, width = 200),
selectInput("select", h3("Categorii"),
choices = list("CLIENT_TYPE" = "CLIENT_TYPE", "Grupare.Leasing" = "Grupare.Leasing",
"AGENT_TYPE" = "AGENT_TYPE", "Grupare.vehicul" = "Grupare.vehicul",
"Grupare.vechime"="Grupare.vechime"),
selected = "CLIENT_TYPE"),
selectInput("select2",label = "Client Type",
choices = c ("NONE","Categorie_client"),
selected = "NONE")),
mainPanel(
h1(strong("CASCO 3003")),
mainPanel(tableOutput("table1")))
)
)
server <- function(input, output) {
aggregated <- reactive({
DATA %>%
group_by("3003"=input$select) %>%
summarise("Earned Premium" = sum(EP), "Exposure" = sum(EXP),"GWP" = sum(GWP_RON), "Incurred" = sum(INC),"NO of events" = sum(Nr.evenim))
})
output$table1 <- renderTable({
aggregated()
})
}
shinyApp(ui = ui, server = server)
例えば:
CLIENT_TYPE EP EXP GWP INC NR.EVENIM
PF 10 1 1000 30 2
PF 20 4 2000 50 1
PF 50 5 1500 60 2
PJ 20 3 2500 20 1
PJ 40 7 2000 10 1
PJ 30 8 500 20 2
PJ 20 9 1500 20 1
私はそのようなsmthを取得したかった:
CLIENT_TYPE Earnend Premium Exposure GWP Incurred No of events
PF 80 10 4500 140 5
PJ 110 27 6500 70 5
しかし、実際にはアプリは総計を示しています:
3003 Earnend Premium Exposure GWP Incurred No of events
CLIENT_TYPE 190 37 11000 210 10
smbdが私が言おうとしていることを理解してくれることを願っています。
ありがとうございました。
を使用input$select
した場合は、文字列(input$select = "CLIENT_TYPE"
)です。
したがって、関数の代わりに関数group_by_()
(またはgroup_by_at()
)を使用する必要がありますgroup_by()
。この関数は、文字列をdata.frameの変数と見なす必要があることを理解します。
詳細はこちら:dplyr:group_by関数とgroup_by_関数の違いは何ですか?
aggregated <- reactive({
DATA %>%
group_by_(input$select) %>%
summarise( [...] )
})
または
aggregated <- reactive({
DATA %>%
group_by_at(input$select) %>%
summarise( [...] )
})
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加