2016-07-28 41 views
2

我有兩個時間字段的數據幀。我試圖弄清楚這兩次的區別。我面臨的問題是第一行的單位在所有行中都是全線使用的。但價值是在一個不同的單位。如何具有不同單元的difftime列中的R數據幀

下面是一個例子:

MYT < - strptime( 「2016年7月15日上午07點51分33秒」,「%米/%d /%Y%I:%M:% S%p「) - strptime(」2016/7/15 7:51:32 AM「,」%m /%d /%Y%I:%M:%S%p「)

myt [2 ] < - strptime(「2016/7/15 7:53:32 AM」,「%m /%d /%Y%I:%M:%S%p」) - strptime(「2016/7/15 7 :51:32 AM」, 「%米/%d /%Y%I:%M:%S%p」)

MYT

在秒的時間差

[1] 1個2

MYT [1]

的1秒

時差

MYT [2]

時間差2秒

在這種情況下,用於MYT答案[2]是2分鐘,而不是2秒。是否有可能 1.有不同的行有不同的單位? 2.如果不是ATLEAST對給定單位的正確值(120秒在這種情況下)

請幫助。

回答

0

哇。我不知道這是發生。

一個可能的解決辦法是使用difftime()和指定時間差「單位」是你想要的。

> myt <- difftime(strptime("7/15/2016 7:51:33 AM", "%m/%d/%Y %I:%M:%S %p"), 
        strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p"), 
        units = "secs") 
> myt[2] <- difftime(strptime("7/15/2016 7:53:32 AM", "%m/%d/%Y %I:%M:%S %p"), 
        strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p"), 
        units = "secs") 
> myt 
Time differences in secs 
[1] 1 120 

感謝您指出了這一點。我非常新手與日期時間/ POSIXct的東西,我就不會意識到這

+1

我想我知道它爲什麼顯示'錯誤'。當myt被創建時,向量被初始化爲具有「secs」屬性;向矢量添加元素不會改變單位(即僅添加時間差的數字解決方案?)。 – carlo

+0

謝謝卡羅。我使用了你的方法,並將整列轉換爲秒,然後我可以在需要時將它轉換爲行級。 – Sai

+0

@Sai,很高興知道它適合你。無論你在做什麼,一切順利! – carlo

0

你能使用多列或者根本不是你的問題的工作嗎?如果它能工作:

myt <- data.frame(strptime("7/15/2016 7:51:33 AM", "%m/%d/%Y %I:%M:%S %p") - strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p")) 
myt[,2] <- strptime("7/15/2016 7:53:32 AM", "%m/%d/%Y %I:%M:%S %p") - strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p") 
colnames(myt) <- c("time1","time2") 
myt 
+0

謝謝菲爾。就我而言,我正在處理大型數據集,並且使用多列無法工作。 – Sai

相關問題