考虑另一个变量作为指标,获得R中因子变量的频率

时间:2013-11-11 20:54:01

标签: r

我想计算一个因子变量的频率,考虑另一个变量作为参考。我的数据框的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中每个级别Segment的频率。 Segment有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

0 个答案:

没有答案