好的,这是相继提出的第二个R问题。
我的数据:
Timestamp St_01 St_02 ...
1 2008-02-08 00:00:00 26.020 25.840 ...
2 2008-02-08 00:10:00 25.985 25.790 ...
3 2008-02-08 00:20:00 25.930 25.765 ...
4 2008-02-08 00:30:00 25.925 25.730 ...
5 2008-02-08 00:40:00 25.975 25.695 ...
...
通常情况下,我会结合使用ddply
和summarize
来计算集合(例如,整年每小时的均值)。
在上述情况下,我会创建一个类别,比如小时(例如,strptime(data$Timestamp,"%H") -> data$hour
),然后在ddply
中使用该类别,如ddply(data,"hour", summarize, St_01=mean(St_01), St_02=mean(St_02)...)
,以对每列按类别进行平均。
但这里有个问题。我有超过40列需要处理,而且我不想将它们作为参数一个个地输入summarize
函数中。以前我会在shell中编写循环来生成此代码,但程序员不是这样解决问题的,对吧?
那么,请问是否有更好的方法以减少击键量的方式实现相同的结果呢?
St
变量转换为长格式,然后使用您喜欢的聚合函数by
、aggregate
、ddply
按c(hour,index)
组合,其中index
是在重塑过程中创建的变量。 - Ari B. Friedman