0

我想计算一个因子变量的频率,考虑另一个变量作为参考。我的数据框的dput()版本是下一个:

structure(list(ID = c("0001", "0002", "0003", "0004", "0005", 
"0006", "0007", "0008", "0009", "0010", "0011", "0012", "0013", 
"0014", "0015", "0016", "0017", "0018", "0019", "0020"), Class = structure(c(1L, 
1L, 1L, 2L, 3L, 2L, 2L, 3L, 3L, 1L, 4L, 4L, 4L, 5L, 5L, 1L, 1L, 
1L, 5L, 5L), .Label = c("A", "B", "C", "D", "E"), class = "factor"), 
    Segment = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 
    4, 4, 4, 4, 4)), .Names = c("ID", "Class", "Segment"), row.names = c(NA, 
20L), class = "data.frame") 

它显示如下:

ID  Class   Segment
0001    A   1
0002    A   1
0003    A   1
0004    B   1
0005    C   1
0006    B   2
0007    B   2
0008    C   2
0009    C   2
0010    A   2
0011    D   3
0012    D   3
0013    D   3
0014    E   3
0015    E   3
0016    A   4
0017    A   4
0018    A   4
0019    E   4
0020    E   4

我想计算Class考虑每个级别的频率SegmentSegment有 4 个级别 1,2,3,对于他们我想计算 的频率Class,我希望得到这样的东西:

Segment:1
A B C
3 1 1

Segment:2
A B C
1 2 2

Segment:3
D E
3 2

Segment:4
A E
3 2

我想得到这样的东西,但我在 R 中找不到计算它的方法。提前致谢。

解决方案

就像 R 中的所有内容一样简单,ftable()函数解决了我的问题:

ftable(d[,c(3,2)])
        Class A B C D E
Segment                
1             3 1 1 0 0
2             1 2 2 0 0
3             0 0 0 3 2
4             3 0 0 0 2
4

0 回答 0