2013-08-30 40 views
0

我想就怎麼跑過來幾個變量的公式一些幫助,並基於以下因素,所以一個例子基於一個星期每小時數據:[R應用使用的一個因素在數據幀中的公式推

df<- data.frame(a = runif(168), 
+    b = runif(168), 
+    c = runif(168), 
+    d = rep(1:7, each = 24)) 

attach(df) 

fx<-function(x) { mean(x) } # it can be more complicated, just to illustrate 

a,b,c是不同的變量,d是我的因素。

這裏我有一個每天的因素,我想應用它的所有3個變量,並將每個結果寫入一個單獨的向量/數據框。所以,現在在做什麼IM是:

a.mean <-tapply(a, d, fx) 
b.mean <-tapply(b, d, fx) 
c.mean <-tapply(c, d, fx) 

這讓我相當肯定有我錯過了一些巧妙的技巧,但似乎無法找到。我希望能夠放棄因子變量,並且只是在指定的時間段內循環,並按照我想要的那樣遍歷儘可能多的變量。

回答

1

使用公式接口aggregate,點(.)可用於表示所有其他變量:

aggregate(.~d, df, mean) 
    d   a   b   c 
1 1 0.5444300 0.4348559 0.5543393 
2 2 0.5997199 0.4751082 0.5116904 
3 3 0.4195746 0.6696669 0.5239728 
4 4 0.4764139 0.5102245 0.4901829 
5 5 0.3938329 0.3792583 0.4826971 
6 6 0.4633260 0.5518397 0.4558116 
7 7 0.4814347 0.4946845 0.5371871 

請注意, t需要使用這個附加數據幀(因爲它作爲參數提供給aggregate)。

0

可以使用plyr軟件包內(其中MYDATA爲您的數據):

library(plyr) 
ddply(mydata,.(d), summarise, meana=mean(a),meanb=mean(b), meanc=mean(c)) 

或使用此:

library(plyr) 
ddply(mydata,.(d), colwise(mean)) 
相關問題