[英]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.