R - 日期差异的可能性

时间:2011-09-13 20:59:33

标签: r

下面给出df,我希望得到请求之间的时间,然后得到一个文本输出的概率直方图,请求将在1秒间隔,2秒之间分开,相隔3秒等等。直到10秒。我想在计算概率时使用所有数据,但我只想查看前10秒的数据。

我试图在ML上获得这方面的帮助,但不能。我在这里得到了很大的帮助,所以我希望我不会滥用帮助。这应该是我的最后一个问题。非常感谢。

df <- read.csv(textConnection('
"SOURCE","REQUEST_DATE"
"A","09/11/2011 09:28:48"
"A","09/11/2011 09:28:47"
"A","09/11/2011 09:15:42"
"A","09/11/2011 09:15:41"
"D","09/13/2011 09:06:53"
"D","09/13/2011 09:06:52"
"D","09/13/2011 08:56:55"
"D","09/13/2011 08:56:52"
"D","09/13/2011 08:55:43"
"D","09/13/2011 08:39:07"
'), stringsAsFactors=FALSE)

在Andrie的出色帮助下,这就是我如何获得差异:

df_diff <- ddply(df, .(SOURCE), summarize, TIME_DIFF=-unclass(diff(REQUEST_DATE)))

所以,我想要以下内容(包括结果)

A 1 55%
A 2 15%
A 3 10%
...
A 10 5%
D 1 10%
D 2 12%
D 3 15%
...
D 10 1%
例如,

D 5013 2%会被切断,因为我只想要每个来源的前10名。

1 个答案:

答案 0 :(得分:1)

“直方图为文本”部分令我感到困惑,但我猜你真的想在一秒钟内制表:

 df_diff$tdiff_grp <- cut(df_diff$TIME_DIFF, 0:10, right=FALSE)
 with(df_diff, tapply(tdiff_grp, SOURCE, table))
$A
 [0,1)  [1,2)  [2,3)  [3,4)  [4,5)  [5,6)  [6,7)  [7,8)  [8,9) [9,10) 
     0      2      0      0      0      0      0      0      0      0 

$D
 [0,1)  [1,2)  [2,3)  [3,4)  [4,5)  [5,6)  [6,7)  [7,8)  [8,9) [9,10) 
     0      1      0      1      0      0      0      0      0      0 

在澄清实际需要之后,使用prop.table或将它们除以它们的总和(然后乘以100)来产生百分比是一件简单的事情。

编辑:一个简单的函数可以返回百分比:

> tbls <- with(df_diff, tapply(tdiff_grp, SOURCE,table))
> lapply(tbls, function(x) 100*x/sum(x) )
$A
 [0,1)  [1,2)  [2,3)  [3,4)  [4,5)  [5,6)  [6,7)  [7,8)  [8,9) [9,10) 
     0    100      0      0      0      0      0      0      0      0   

$D    
 [0,1)  [1,2)  [2,3)  [3,4)  [4,5)  [5,6)  [6,7)  [7,8)  [8,9) [9,10) 
     0     50      0     50      0      0      0      0      0      0