2013-10-01 113 views
-1

我有不同项目的数据,其中包含途径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 

对于每一个途径,我想从可能性列数的“不可能”,“可能” &“可能”数,这样我就可以将每个Pathway的数据框连成一行,并且不太可能,可能也可能是列。

有没有人知道这样做的最好方法?

在此先感谢!

+3

这是一个已经被问和回答过很多次了非常常见的数据操作。你能分享一些关于你试过的东西以及为什么它没有奏效吗? – Justin

回答

5

假设你的数据被称为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 
+0

有很多方法可以做到这一点。我们应该在什么时候说:做一些搜索!我是倒票选民之一,但如果我回答了,我会用'xtabs'。在这种情况下更好的标签。 –

+2

如果你打算使用表为什么不:'with(dat,table(table(Pathway,Likelihood))' –

+0

这是非常有用的,谢谢你的回应 – EricaO