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