sqldf下面是一個sqldf解決方案,其中輸入數據幀是DF
:
library(sqldf)
min15 <- 15 * 60 # in seconds
ans <- fn$sqldf("select
t.Time - t.Time % $min15 as Time,
sum(t.No_Words) as No_Words
from DF t
group by Time")
plot(No_Words ~ Time, ans, type = "o")
給予:
> ans
Time No_Words
1 2013-11-17 13:30:00 52
2 2013-11-17 14:00:00 29
3 2013-11-17 17:15:00 39
4 2013-11-17 22:45:00 31
隨着緻密網格如果緻密網格我們需要一個網格數據框,G
,這是我們與現有ans
加入(注意sqldf在克隆氏病包,所以我們使用它的trunc
功能拉):
# create grid G
rng <- range(as.POSIXct(trunc(as.chron(DF$Time), 15/(24 * 60))))
G <- data.frame(Time = seq(rng[1], rng[2], by = min15))
ans2 <- sqldf("select Time, coalesce(No_Words, 0) as No_Words
from (select * from G left join ans using(Time))")
plot(No_Words ~ Time, ans2, type = "o")
的ans2
前幾行是:
> head(ans2)
Time No_Words
1 2013-11-17 13:30:00 52
2 2013-11-17 13:45:00 0
3 2013-11-17 14:00:00 29
4 2013-11-17 14:15:00 0
5 2013-11-17 14:30:00 0
6 2013-11-17 14:45:00 0
動物園我們還表明動物園的解決方案:
library(zoo)
library(chron)
FUN <- function(x) as.POSIXct(trunc(as.chron(x), 15/(24 * 60)))
z <- read.zoo(DF, FUN = FUN, aggregate = sum)
plot(z)
這給了z
:
> z
2013-11-17 13:30:00 2013-11-17 14:00:00 2013-11-17 17:15:00 2013-11-17 22:45:00
52 29 39 31
注:我們用這個數據,尤其是Time
類"POSIXct"
的:
Lines<- " Time No_Words
1 2013-11-17 13:37:00 6
2 2013-11-17 13:37:00 16
3 2013-11-17 13:37:00 18
4 2013-11-17 13:37:00 12
5 2013-11-17 14:03:00 5
6 2013-11-17 14:03:00 20
7 2013-11-17 14:04:00 4
8 2013-11-17 17:21:00 39
9 2013-11-17 22:48:00 19
10 2013-11-17 22:48:00 12
"
raw <- read.table(text = Lines, skip = 1)
DF <- data.frame(Time = as.POSIXct(paste(raw$V2, raw$V3)), No_Words = raw$V4)
+1所有的變化! – A5C1D2H2I1M1N2O1R2T1