在 R 中使用多个变量创建比例轴 table

Create proportional pivot table with multiple variables in R

我正在尝试根据以下数据创建一个枢轴 table:

Scan Distance NOFO  ID
  1      1.0  NANA  A12
  2      1.0  NANA  A10
  3      2.0  HAHT  A12
  4      4.0  TANA  A1
  5      1.0  TANA  A3
  6      0.5  TATA  A1

我想要每个距离和 ID 的 NOFO 比例。

我试过使用 ftable、dcast 和 tapply 函数,并且能够为 NOFO 做到这一点~距离:

prop.table(table(df$NOFO, df$Distance, useNA = "ifany")))

示例结果:

        0.5          1            2           4       
 HAHT   0.003012048  0.000000000  0.000000000 0.003012048
 NANA   0.000000000  0.000000000  0.003012048 0.000000000
 TANA   0.000000000  0.000000000  0.003012048 0.003012048
 TATA   0.000000000  0.000000000  0.000000000 0.000000000 

但是我一直没能想出NOFO~Distance+ID的解决方案,所以每个Distance比例都是按ID拆分的。

只需添加 ID 作为第三个变量。

prop.table(table(df$NOFO, df$Distance, df$ID, useNA = "ifany"))
, ,  = A1


             0.5         1         2         4
  HAHT 0.0000000 0.0000000 0.0000000 0.0000000
  NANA 0.0000000 0.0000000 0.0000000 0.0000000
  TANA 0.0000000 0.0000000 0.0000000 0.1666667
  TATA 0.1666667 0.0000000 0.0000000 0.0000000

, ,  = A10


             0.5         1         2         4
  HAHT 0.0000000 0.0000000 0.0000000 0.0000000
  NANA 0.0000000 0.1666667 0.0000000 0.0000000
  TANA 0.0000000 0.0000000 0.0000000 0.0000000
  TATA 0.0000000 0.0000000 0.0000000 0.0000000

, ,  = A12


             0.5         1         2         4
  HAHT 0.0000000 0.0000000 0.1666667 0.0000000
  NANA 0.0000000 0.1666667 0.0000000 0.0000000
  TANA 0.0000000 0.0000000 0.0000000 0.0000000
  TATA 0.0000000 0.0000000 0.0000000 0.0000000

, ,  = A3


             0.5         1         2         4
  HAHT 0.0000000 0.0000000 0.0000000 0.0000000
  NANA 0.0000000 0.0000000 0.0000000 0.0000000
  TANA 0.0000000 0.1666667 0.0000000 0.0000000
  TATA 0.0000000 0.0000000 0.0000000 0.0000000

或者如果您更喜欢公寓 table

> ftable(.Last.value)
                 A1       A10       A12        A3

HAHT 0.5  0.0000000 0.0000000 0.0000000 0.0000000
     1    0.0000000 0.0000000 0.0000000 0.0000000
     2    0.0000000 0.0000000 0.1666667 0.0000000
     4    0.0000000 0.0000000 0.0000000 0.0000000
NANA 0.5  0.0000000 0.0000000 0.0000000 0.0000000
     1    0.0000000 0.1666667 0.1666667 0.0000000
     2    0.0000000 0.0000000 0.0000000 0.0000000
     4    0.0000000 0.0000000 0.0000000 0.0000000
TANA 0.5  0.0000000 0.0000000 0.0000000 0.0000000
     1    0.0000000 0.0000000 0.0000000 0.1666667
     2    0.0000000 0.0000000 0.0000000 0.0000000
     4    0.1666667 0.0000000 0.0000000 0.0000000
TATA 0.5  0.1666667 0.0000000 0.0000000 0.0000000
     1    0.0000000 0.0000000 0.0000000 0.0000000
     2    0.0000000 0.0000000 0.0000000 0.0000000
     4    0.0000000 0.0000000 0.0000000 0.0000000