如何计算投射数据帧部分内的分数?

时间:2012-07-20 08:14:28

标签: r aggregation

由于融化和后续投射[1]数据集,我获得了以下数组(?)(sumStats.c):

, , group2 = G2_1, variable = area

            group1
group3        G1_1      G1_2     G1_3       G1_4
   G3_1      0.000     0.000     0.00      0.000
   G3_2      0.000     0.000     0.00      0.000
   G3_3      0.000     0.000     0.00      0.000
   G3_4      0.000     0.000     0.00      0.000
   G3_5      0.000     0.000     0.00      0.000
   G3_6      0.000     0.000     0.00      0.000
   G3_7      0.000     0.000 26336.99  85236.488
   G3_8      0.000  4999.235 87935.73 360062.128
   G3_9      0.000     0.000     0.00      0.000
   G3_10  7853.982 18538.285 49744.29 134180.428
   G3_11     0.000     0.000     0.00   8830.825
   G3_12     0.000     0.000     0.00      0.000


, , grou2 = G2_2, variable = area

         group1
group3         G1_1     G1_2      G1_3      G1_4
   G3_1       0.000     0.00      0.00      0.00
   G3_2       0.000     0.00      0.00      0.00
   G3_3       0.000     0.00      0.00      0.00
   G3_4       0.000     0.00      0.00      0.00
   G3_5       0.000     0.00      0.00      0.00
   G3_6       0.000     0.00      0.00  51772.66
   G3_7       0.000     0.00      0.00      0.00
   G3_8    7853.982 22086.38 140874.76 523373.88
   G3_9       0.000     0.00      0.00      0.00
   G3_10      0.000  1415.79  23325.94  13407.49
   G3_11      0.000     0.00      0.00      0.00
   G3_12      0.000     0.00      0.00      0.00


, , group2 = G2_3, variable = area

          group1
group3          G1_1      G1_2       G1_3        G1_4
   G3_1       0.0000     0.000      0.000      0.0000
   G3_2       0.0000     0.000      0.000      0.0000
   G3_3       0.0000     0.000      0.000     93.2632
   G3_4       0.0000     0.000      0.000      0.0000
   G3_5       0.0000     0.000      0.000  46353.3814
   G3_6       0.0000     0.000      0.000      0.0000
   G3_7       0.0000     0.000      0.000      0.0000
   G3_8    7390.0570 16851.829 101013.680 232666.8839
   G3_9       0.0000  2541.574   6397.271  87825.7232
   G3_10      0.0000     0.000      0.000      0.0000
   G3_11    436.9895  4118.440  56572.140 173866.7915
   G3_12      0.0000     0.000      0.000  47924.5494

现在,我需要在每个area内获取变量(group2)的分数,相对于group1中每个group3的总和}。例如,G2_1(group2)在G1_1(group3)中拥有100%的G3_10(group1),G1_2(group1)拥有G3_8的21.24%和78.76% G3_10,等等。一旦为group1的每一列计算了百分比,我认为我可以melt()生成的数组来获取进一步分析所需的数据帧。

我认为ddply()在这里会有所帮助,但由于我很难理解如何将其用于手头的任务,如果有人可以提供帮助,我将不胜感激。

[1]
sumStats.m <- melt(sumStats, id=c("group1", "group2", "group3"), "area")
sumStats.c <- cast(sumStats.m, group3 ~ group1 ~ group2 ~ variable, sum)

1 个答案:

答案 0 :(得分:0)

尝试:

prop.table(sumstats.c,margin=c(1,3))

例如:

x<-xtabs(~cyl+vs+am,mtcars)
x
, , am = 0

   vs
cyl  0  1
  4  0  3
  6  0  4
  8 12  0

, , am = 1

   vs
cyl  0  1
  4  1  7
  6  3  0
  8  2  0

prop.table(x,margin=c(1,3))
, , am = 0

   vs
cyl     0     1
  4 0.000 1.000
  6 0.000 1.000
  8 1.000 0.000

, , am = 1

   vs
cyl     0     1
  4 0.125 0.875
  6 1.000 0.000
  8 1.000 0.000