2016-07-28 23 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

相关问题