2012-08-14 152 views
0

我对R很陌生,我正在寻找一种按其频率汇总数据的方法。所以,我有这样一个数据帧:按频率分组的数据分组

immagine media 
1   1 60.65391 
2   2 58.89603 
3   3 60.45428 
4   4 55.91487 
5   5 56.11804 
6   6 56.05239 
7   7 61.12667 
8   8 60.46287 
9   9 57.96718 
10  10 58.75914 
11  11 60.39214 
12  12 57.64966 
13  13 57.14457 
14  14 56.85810 
15  15 56.97652 
16  16 58.45831 
17  17 57.37774 
18  18 57.31794 
19  19 60.89813 
20  20 61.57055 
21  21 59.62459 
22  22 56.86678 
23  23 56.46254 
24  24 54.72302 
25  25 56.04285 
26  26 55.88004 
27  27 56.64764 

,我想有像55-60,50-55成群变量“媒体”分裂一张桌子和它的相对想象,。我真的不知道如何继续。 提前感谢任何人。

我还在寻找将其数据除以置信区间。为了让不同的群体潜入95%CI,是否可以使用削减功能? 。提前致谢。尼古拉

尼古拉

+3

目前还不清楚你想要什么,但是cut()会在答案中出现。 – Andrie 2012-08-14 14:14:49

+0

你有没有签出[这个问题](http://stackoverflow.com/q/11261325/1086688)? – nograpes 2012-08-14 14:16:28

+0

假设您的数据集名为Dat。你可以这样做'newdat < - transform(Dat,mediacut = cut(Dat $ media,c(50,55,max(Dat $ media)),include.lowest = TRUE)))' – dickoa 2012-08-14 14:23:20

回答

5

cut给你当水平是您所指定的分组的一个因素。

table需要一个载体,告诉你有多少元素在每个级别。

两者结合起来,你应该能够做到你想要什么:

> media <- rnorm(10,2.5)+57 
> media 
[1] 60.13145 58.78920 61.01821 60.35878 59.20806 57.75657 61.12825 59.67605 
[9] 59.29902 58.70735 
> ct <- cut(media, seq(50,65,2.5), include.lowest=TRUE) 
> ct 
[1] (60,62.5] (57.5,60] (60,62.5] (60,62.5] (57.5,60] (57.5,60] (60,62.5] 
[8] (57.5,60] (57.5,60] (57.5,60] 
Levels: [50,52.5] (52.5,55] (55,57.5] (57.5,60] (60,62.5] (62.5,65] 
> table(ct) 
ct 
[50,52.5] (52.5,55] (55,57.5] (57.5,60] (60,62.5] (62.5,65] 
     0   0   0   6   4   0 

因为表返回一个向量,你可以以百分比的输出,如果你想:

> table(ct)/length(ct)*100 
ct 
[50,52.5] (52.5,55] (55,57.5] (57.5,60] (60,62.5] (62.5,65] 
     0   0   0  60  40   0 

由于保存了向量的排序,您可以将ct作为新列存储,将分组添加回数据框。如果您data.frame被称为dat,则:

dat$group <- ct 

应该这样做。

+0

谢谢弗里德曼,我也想将正确的“immagine”数字与组关联起来。这就是我真正想要的。再次感谢你 – Spigonico 2012-08-14 14:30:50

+2

修订。请注意,[可重现的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)在未来获得更好的帮助将会有很大的帮助。 – 2012-08-14 15:06:51

+0

感谢这就是我要找的。我必须深入“剪切”功能。 Nik – Spigonico 2012-08-14 15:14:05