2013-01-09 111 views
1

我有一個數據幀的東西,如以下結構:使用plyr來計算利潤率

Trial Index Condition1 Condition2 Measures 
1    A    Y    ... 
2    A    Y    ...   
3    B    Y    ... 
4    B    Y    ... 
5    A    Z    ... 
6    A    Z    ...   
7    B    Z    ... 
8    B    Z    ... 

我想計算上的條件1和條件2,的每個組合的一些綜合性指標利潤率。我可以使用多個呼叫ddply要做到這一點,但我不知道是否有一些簡單的方法來得到一個數據結構出來的,是這樣的:

Condition1 Condition2 Mean Median .... 
A    Y    ...  ...  .... 
A    Z    ...  ...  .... 
A    -    ...  ...  ....    
B    Y    ...  ...  .... 
B    Z    ...  ...  .... 
B    -    ...  ...  .... 
-    Y    ...  ...  .... 
-    Z    ...  ...  .... 
+0

這或多或少是我已經有了。我想從中得到的是用於計算邊距的函數,例如_ Condition_中的樣本的均值和中位數。上面的代碼只給出了Condition1和Condition2的每個組合的均值和中位數。 – Nathan

+0

這將是所有樣本的平均值。我希望條件1中所有樣本的均值。這本身是相當簡單的,但我想如果我可以得到每個均值(所有樣本的均值,條件1中的所有樣本的均值,條件2中的所有樣本的均值,條件1和條件2的每個組合中的樣本的均值)相同的數據框架,代碼儘可能簡潔。 – Nathan

+0

這就是我的想法。無論如何謝謝你堅持! – Nathan

回答

3

@DWin是對的,tables包可能是這裏的正確線索。不考慮格式化這裏是一個例子:

library(tables) 
d1 <- data.frame(id = 1:10, c1 = sample(c("a","b"), 10, replace = TRUE), 
     c2 = sample(c("c", "d"), 10, replace = TRUE), measures = rnorm(1:10)) 
t1 <- tabular((c1 + c2 + c1*c2 +1) ~ (measures)*(mean + median), data = d1) 

      measures   
      mean  median 
     c1 a -0.33306 -0.1801 
     b -0.54121 -0.6381 
     c2 c -0.04862 0.1647 
     d -0.69615 -0.8129 
c1 a c2 c -0.26195 -0.2619 
     d -0.38047 -0.1801 
    b c 0.16472 0.1647 
     d -1.01182 -1.1863 
     All -0.43713 -0.4678 

雖然需要一段時間才能進入語法;在正面它提供了將表格導出到LaTeX的功能。如果您不想/需要該對象中的所有標籤,則可以通過as.matrix(t1, format = as.numeric)提取值。

注意:在公式的左側c1c2必須factor這個工作

+0

我可能是'對',但你應該得到充分的工作例子的所有功勞。 –

+0

感謝您的示例! – Nathan

3

投訴已發出了關於R的歲月與「報告」有關的困難。實際上沒有內置函數用於在表格中插入小計(或子方式)和總計。 SQL驅動程序的接口可以提供一些補救措施,但我不會那麼簡單,因爲你沒有使用數據庫概念來提出你的問題,我猜這對你不好。這是一個用款項從先前的回答結果全基地-R的方法:

R: calculating column sums & row sums as an aggregation from a dataframe

如果您構建了邊緣人數組,然後有可能是進步的渠道「扁平化」,它與ftable 。在這裏看到:

Grouping and Sorting in R

還有就是tables包鄧肯默多克。這可能是最接近我可以得出答案的。但是我想對於具體問題的答案是「有一些簡單的方法」來獲得一個R對象,其複雜性要求是......不......至少我知道的是哪個對象。