在R中创建包含多个变量的比例数据透视表

时间:2016-05-06 11:14:42

标签: r pivot-table percentage

我正在尝试使用以下数据创建数据透视表:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-app="app" ng-controller="MainController as vm">
  <div ng-repeat="dz in vm.data" style="{{ vm.style($index) }}">
    {{dz}}
  </div>
</div>

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

我尝试过使用ftable,dcast和tapply函数,并且能够为NOFO做距离〜距离:

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

示例结果

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

但我无法找出NOFO~Distance + ID的解决方案,因此每个ID的每个距离比例都是分开的。

1 个答案:

答案 0 :(得分:0)

只需添加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

或者如果您更喜欢平底桌

> 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