我有一个包含4列的数据框...日期,小时,位置,值。
我想对数据做的是为每个唯一的日期/小时/位置提供摘要统计。这似乎很容易,因为我可以做到
x <- subset(my.df[,4],
my.df[,2]==(some parameter) & my.df[,3]==(another parameter)
)
然后从x获取我想要的任何摘要统计信息。然而,棘手的部分是我还希望从上述值的每个差异中获得汇总统计数据。因此,例如,当loc=1
与value
loc=2
hour=1
时my.df
timevar=loc
与timevar=hour
'data.frame': 9493401 obs. of 4 variables:
$ Loc : int 1 1 1 1 1 1 1 1 1 1 ...
$ Date: POSIXct, format: "2010-10-29" "2010-10-29" ...
$ Hour : int 1 2 3 4 5 6 7 8 9 10 ...
$ Value : num 7.63 4.07 4.9 1.61 0.34 -5.23 2.11 2.39 7.2 4.41 ...
{{1}}时{{1}},{{1}}时,{{1}}可能会有差异。但是,任何一个位置都可能有或没有错过天数。我有一个可能会起作用的想法是重塑{{1}}两倍。首先使用{{1}}使其变宽,然后使用{{1}}重新整形,以便我将使用包含Date,value.1.1,value.1.2等列的wide.df,其中第一个整数是loc和第二个整数是小时,每行是唯一的日期。
是否有更直接的做法,不会涉及20分钟的重塑(最初的df是大约9493401行,有4个变量,然后我将它拉伸到720行,14857列? @Brandon:这是str输出。我还没有尝试过你的建议。
{{1}}
答案 0 :(得分:1)
来自dcast
的{{1}}在这方面看起来非常活泼:
reshape2
您还可以执行诸如loc / hour计数之类的事情
library(reshape2)
dat <- data.frame(date=sample(1:100,9493401,replace=TRUE),
hour=rep(1:24,1000000)[1:9493401],
loc=rep(letters[1:9],1054823)[1:9493401],
value=rnorm(9493401))
dcast(dat,date + hour ~ loc)
如果您想要一个特定于您案例的答案,您需要提供更多信息。