在 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
我正在尝试根据以下数据创建一个枢轴 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