我對R的知識和經驗有限,請耐心等待。轉換時間間隔R
我有持續時間的測量在以下形式:
d + H:M:S.S
例如3 + 23:12:11.931139,其中d =天,h =小時,m =分鐘,s.s =小數秒。我想創建這些值的直方圖。
有沒有簡單的方法來將這種字符串輸入轉換爲數字形式,如秒?我發現的所有信息似乎都適用於日期時間對象。
理想情況下,我希望能夠在命令行上將數據列表傳遞給R,因此可以即時創建直方圖。
乾杯
洛里斯
我對R的知識和經驗有限,請耐心等待。轉換時間間隔R
我有持續時間的測量在以下形式:
d + H:M:S.S
例如3 + 23:12:11.931139,其中d =天,h =小時,m =分鐘,s.s =小數秒。我想創建這些值的直方圖。
有沒有簡單的方法來將這種字符串輸入轉換爲數字形式,如秒?我發現的所有信息似乎都適用於日期時間對象。
理想情況下,我希望能夠在命令行上將數據列表傳遞給R,因此可以即時創建直方圖。
乾杯
洛里斯
基於SO另一種解決方案:
op <- options(digits.secs=10)
z <- strptime("3+23:12:11.931139", "%d+%H:%M:%OS")
vec_z <- z + rnorm(100000)
hist(vec_z, breaks=20)
短解釋:首先,我設置,所述毫秒所示的這種方式的選項。現在,如果您在控制檯中鍵入z
,則會顯示「2012-05-03 23:12:11.93113」。然後,我將你的字符串解析成一個日期對象。然後我創建更多日期並繪製直方圖。我認爲對你來說重要的一步是解析,strptime
應該可以幫助你。
我會做這樣的:
str = "3+23:12:11.931139"
result = sum(as.numeric(unlist(strsplit(str, "[:\\+]", perl = TRUE))) * c(24*60*60, 60*60, 60, 1))
> result
[1] 342731.9
然後,你可以把它包裝成一個功能,並應用在列表或載體。
雖然我希望避免自己做數學,但這很好,也是通用的。 – loris
這正是我所需要的。不知何故,我忽略了'strptime'。實際上我並不需要毫秒,因爲這些值一般在幾個小時左右,但很高興知道如何去做。 – loris
@loris很高興我能幫到你。如果您的問題得到解答,您是否可以將其標記爲已接受,這樣它就會脫離未解決問題的列表? –