计算列中值的频率

时间:2013-10-01 01:04:28

标签: r

我有不同项目的数据,这些项目具有衔接路径A-E和可能性“不太可能”,“可能”或“可能”。数据看起来像这样(但是有更多项目 - 所以更多行):

   Project   Pathway   Likelihood
1    Red        A       unlikely
2    Red        B       possible
3    Red        C       likely
4    Red        D       possible
5    Red        E       possible
6    Blue       A       possible
7    Blue       B       unlikely
8    Blue       C       possible
9    Blue       D       possible
10   Blue       E       unlikely
11   Green      A       unlikely
12   Green      B       possible
13   Green      C       likely
14   Green      D       possible
15   Green      E       possible
16   Yellow     A       unlikely
17   Yellow     B       unlikely
18   Yellow     C       possible
19   Yellow     D       possible
20   Yellow     E       likely

对于每条衔接路线,我想要计算“不太可能”,“可能”和&的数量。来自Likelihood列的“可能”,以便我可以将每个Pathway作为一行创建一个数据框,并且不太可能,可能并且可能作为列。

有谁知道最好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:6)

假设您的数据被称为dat

intm <- aggregate(Likelihood ~ Pathway, data=dat, FUN=table)
data.frame(Pathway=intm$Pathway, intm$Likelihood)

#  Pathway likely possible unlikely
#1       A      0        1        3
#2       B      0        2        2
#3       C      2        2        0
#4       D      0        4        0
#5       E      1        2        1

或全部在一行:

do.call(data.frame, aggregate(Likelihood ~ Pathway, data=dat, FUN=table))

#  Pathway Likelihood.likely Likelihood.possible Likelihood.unlikely
#1       A                 0                   1                   3
#2       B                 0                   2                   2
#3       C                 2                   2                   0
#4       D                 0                   4                   0
#5       E                 1                   2                   1