2016-11-29 127 views
0

我有這個數據集here,我想創建一個簡單的Slider輸入,其中國家的相應平均溫度將通過改變年份而改變。到目前爲止,我已經寫了這個。我想從1743年到2013年預測加拿大的平均氣溫。我應該如何着手實現這一目標?Shiny R:執行Slider輸入

ui.R

fluidPage(
    verticalLayout(
    titlePanel("Russian Average Temperature"), 
    plotOutput("plot1"), 
    wellPanel(
     sliderInput("Year", "Timeline", 1743, 2013, 
        value = 0, step = 1) 
    ) 
) 
) 

server.R

library(shiny) 
library(dplyr) 
library(tidyr) 
library(ggplot2) 

data <- read.csv("..\\GlobalLandTemperatures\\GlobalLandTemperaturesByState.csv", 
       fileEncoding = "UTF-8") 

function(input, output) { 

    data %>% 
    filter(Country=="Canada") %>% 
    separate(col = dt, into = c("Year", "Month", "Day"), convert = TRUE) ->cCanada 
    cCanada<-na.omit(cCanada) 

    cCanada %>% 
    filter(Year>1743) %>% 
    group_by(Year) %>% 
    summarise(Temp = mean(AverageTemperature)) ->cCanAvgTemp 

    output$plot1 <- renderPlot({ 
    plot(x = Year, y = AverageTemperature) 
    }) 
} 
+0

所以你想顯示具體的年間的平均氣溫,多數民衆贊成在了滑蓋您已經choosen? –

+0

就是這樣的。通過滑動滑塊,我想演示特定國家當年的具體溫度。 – johnalias91

回答

0

您需要創建反應數據集,所以它看起來就像是:

data <- reactive({ 
    if(!is.null(input$Year)){ 
     data<-cCanAvgTemp %>% 
     filter(cCanAvgTemp[ ,Year] >= input$Year[1]) 
    } 
    data 
    }) 

output$plot1 <- renderPlot({ 
    plot(data=data(),x = Year, y = Temp) 
    }) 

[編輯]全碼:

library(shiny) 
library(dplyr) 
library(tidyr) 
library(ggplot2) 

data <- read.csv(".../data.csv") 

ui <- fluidPage(
    verticalLayout(
    titlePanel("Russian Average Temperature"), 
    plotOutput("plot1"), 
    wellPanel(
     sliderInput("Year", "Timeline", 1743, 2013, 
        value = 0, step = 1) 
    ) 
) 
) 

server <- function(input, output) { 

    data %>% 
    filter(Country=="Canada") %>% 
    separate(col = dt, into = c("Year", "Month", "Day"), convert = TRUE) ->cCanada 
    cCanada<-na.omit(cCanada) 

    cCanada %>% 
    filter(Year>1743) %>% 
    group_by(Year) %>% 
    summarise(Temp = mean(AverageTemperature)) ->cCanAvgTemp 

    data2 <- reactive({ 
    data <- as.data.frame(cCanAvgTemp) 
    if(!is.null(input$Year)){ 
     data<-data %>% 
     filter(data$Year >= input$Year[1]) #to get value for choosen year change >= sign to == 
    } 
    data 
    }) 

    output$plot1 <- renderPlot({ 
    data2 <- data2() 
    ggplot(data= data2, aes(x = Year, y = Temp)) + geom_line() 
    }) 
} 

shinyApp(ui = ui, server = server) 

結果:

enter image description here

+0

看看編輯。但是,您正是在這一點上提取了一個來自dt列名稱的年份:'data%>%filter(Country ==「Canada」)%>% separate(col = dt,into = c(「Year」 ,「Day」),convert = TRUE) - > cCanada' –

+0

謝謝!我想指定我的問題:添加代碼後,彈出「Error:object'Year'not found」。這種情況下我的錯誤是什麼? – johnalias91

+0

你試過編輯過的版本嗎?因爲當我運行它沒有錯誤彈出 –