我希望問題標題有意義。我正在使用Google表單收集一些數據。表格總是在5點到7點之間提交,但在不同的日子。我想繪製x軸上時間戳的time
組件與表單中的其他值。我希望確保所有時間圖都以時間戳的相同兩小時窗口(即5到7pm)結束,而不管時間戳的date
分量。如何繪製獨立於一天的POSIXct對象/時間戳?
我已經下載的答覆爲CSV,並可以在時間戳沒有任何問題閱讀:
demo <- as.POSIXct(demo$Timestamp, format="%m/%d/%Y %H:%M:%S")
而且數據是這樣的:
> demo
[1] "2015-10-12 17:02:42 CEST" "2015-10-12 17:02:46 CEST" "2015-10-12 17:02:46 CEST"
[4] "2015-10-12 17:02:50 CEST" "2015-10-12 17:02:52 CEST" "2015-10-12 17:02:55 CEST"
[7] "2015-10-12 17:02:58 CEST" "2015-10-12 17:03:02 CEST" "2015-10-12 17:03:09 CEST"
[10] "2015-10-12 17:03:15 CEST" "2015-10-12 17:03:22 CEST" "2015-10-12 17:03:24 CEST"
[13] "2015-10-12 17:03:36 CEST" "2015-10-12 17:03:48 CEST" "2015-10-12 17:04:07 CEST"
[16] "2015-10-12 17:09:20 CEST"
我可以用繪製這些像這樣簡單:
plot(demo, rnorm(length(demo)))
但我希望x軸上的範圍爲5-7pm,我需要確保所有數據都在兩小時範圍內繪製,與數據記錄日無關。如果我做這樣的事情:
startTime <- as.POSIXct("17:00:00", format="%H:%M:%S")
endTime <- as.POSIXct("19:00:00", format="%H:%M:%S")
plot(demo, rnorm(length(demo)), xlim=c(startTime, endTime), xaxt='n')
axis.POSIXct(1, at = seq(startTime, endTime, by="hour"), format = "%M", labels=c("17:00", "18:00", "19:00"))
我得到正確的大綱的情節,但沒有數據。這是因爲startTime
和endTime
將被設置爲當前日期。如果我明確地使用使他們相同的日期作爲數據demo
...
startTime <- as.POSIXct("10/12/2015 17:00:00", format="%m/%d/%Y %H:%M:%S")
endTime <- as.POSIXct("10/12/2015 19:00:00", format="%m/%d/%Y %H:%M:%S")
...數據中的情節正是我想要的方式來顯示出來。
但是:我無法從任何其他日子添加數據點。有人可以向我解釋我如何操作/使用POSIXct對象去除他們的「日期」組件並將它們繪製在同一個圖中?
出於測試目的,你可以複製這個載體複製我上面貼的代碼:
demo <- as.POSIXct(c("2015-10-12 17:02:42 CEST", "2015-10-12 17:02:46 CEST", "2015-10-12 17:02:46 CEST", "2015-10-12 17:02:50 CEST", "2015-10-12 17:02:52 CEST", "2015-10-12 17:02:55 CEST", "2015-10-12 17:02:58 CEST", "2015-10-12 17:03:02 CEST", "2015-10-12 17:03:09 CEST", "2015-10-12 17:03:15 CEST", "2015-10-12 17:03:22 CEST", "2015-10-12 17:03:24 CEST", "2015-10-12 17:03:36 CEST", "2015-10-12 17:03:48 CEST", "2015-10-12 17:04:07 CEST", "2015-10-12 17:09:20 CEST"))
我會用正則表達式演示demo [grepl(「1 [789](?=:\\ d {2} :)」,demo,perl = T)]''。但你可以嘗試使用'lubridate'或'chron'或另一種小時分鐘格式化方法。 –