1

我有一个包含 4 列的数据框...日期、小时、位置、值。

我想对数据做的是为每个唯一的日期/小时/位置提供汇总统计信息。这似乎很容易,因为我可以做到

x <- subset(my.df[,4], 
            my.df[,2]==(some parameter) & my.df[,3]==(another parameter)
           ) 

然后从 x 获取我想要的任何汇总统计信息。然而,棘手的部分是我还想从上述值的每个差异中获取汇总统计信息。因此,例如,我想loc=1value何时开始计算价值的差异loc=2hour=1但在任何一个位置中可能会或可能不会丢失天数。我有一个可能会起作用的想法是重塑my.df更宽两次。首先使它变宽,timevar=loc然后用它重塑它,timevar=hour这样我就可以得到带有 Date、value.1.1、value.1.2 等列的 wide.df,其中第一个整数是 loc,第二个整数是小时,每一行都是唯一的日期。

有没有更直接的做法,不涉及 20 分钟的整形(最初的 df 大约是 9493401 行,有 4 个变量,然后我将它扩展到 720 行,有 14857 列?
@Brandon:这是 str 输出。不过,我还没有尝试过你的建议。

        '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 ...
4

1 回答 1

1

在这dcast方面reshape2似乎很活泼:

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) 

您还可以执行诸如 loc/hour 计数之类的操作

dcast(dat, date + hour ~ loc*hour)

如果您想要特定于您的案例的答案,则需要提供更多信息。

于 2012-11-27T00:00:37.523 回答