簡體   English   中英

R:將字符轉換為只有年份和月份的日期,以在 Shiny 應用程序中的箱線圖 output 上應用 dateRange 輸入

[英]R: transforming character to date with only year and month to apply a dateRange input on a boxplot output in a Shiny app

我有 dataframe(以下稱為 df),第一列 df$date 是類型字符的日期,格式為%Y-%m

我的第一個問題是:如何將這一列中所有條目的類型從字符轉換為日期,只保留年份和月份的相同格式? 我試過 as.Date("2011-08", format(%Y-%m)), as.yearmon("2011-08") (返回一個數字,但我想要一個日期),格式(as.日期(“2011-08”),“%Y-%m”)。 一切都沒有奏效。

我想更改此列的類型的原因是我想在 Shiny 應用程序中實現 dateRange 輸入,范圍從上述列中的最小值到最大值。 也許有另一種解決方案而無需更改類型?

這是我在 Shiny-App 中的輸入:

box(width = 4, height = "50px",
                 dateRangeInput(inputId = 'dateRange', 
                                label = "Period of analysis : ",
                                format = "yyyy-mm",language="en",
                                start = min(df$date),
                                end = max(df$date),
                                startview = "year", separator = " - ")
                 )

我想要min(df$date) resp。 max(df$date)用於開始和結束,但它不起作用。 同樣,問題似乎是,df$date 的類型為 chr,例如“2011-08”。

我在 Shiny-App 的服務器 function 中的輸出代碼如下所示:

output$PartPlot <- renderPlot({
       PartPlot_new <- subset(df, date >= input$dateRange[1] & date <= input$dateRange[2])
       boxplot(PartPlot_new[, input$Table2], xlab = "Part", ylab = "Percentage")
     })

如您所見,目標是從 df 的其他列(包含百分比)中獲取箱線圖。

感謝任何幫助。 提前致謝。

您可以使用這個方便的庫將日期字符串轉換為日期值:

library(anytime)

times <- c("2004-03-21 12:45:33.123456",
           "2004/03/21 12:45:33.123456",
           "20040321 124533.123456",
           "03/21/2004 12:45:33.123456",
           "03-21-2004 12:45:33.123456",
           "2004-03-21",
           "20040321",
           "03/21/2004",
           "03-21-2004",
           "20010101")

anydate(times)
 [1] "2004-03-21" "2004-03-21" "2004-03-21" "2004-03-21" "2004-03-21" "2004-03-21"
 [7] "2004-03-21" "2004-03-21" "2004-03-21" "2001-01-01"

在您的情況下,如果您想使用 %Y-%M 格式進行轉換,您也可以嘗試:

times <- c("2018-11")
anydate(times)
[1] "2018-11-01"

novica的評論是絕對正確的。 將您的日期保留為包含年、月和日的完整日期,其中日可以是 1。列類型顯然是日期。 如果您需要在 label 客戶端中顯示年份和月份,請獲取日期值,格式化為字符串並刪除日期。 在 select 輸入的 shiny 客戶端頁面中,您可以顯示年份和月份“標簽”,但您傳遞的“值”將是完整日期(或者您可以在使用 dateRangeInput 之前添加服務器端的日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM