我对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
我希望有一个表格,将变量“media”分成55-60,50-55等组......而且这是相对不可思议的。我真的不知道该怎么做。 提前感谢任何人。
我还希望将数据除以置信区间。是否可以使用切割功能,以便让不同的群体在95%CI下潜? 。提前致谢。尼古拉
尼古拉
答案 0 :(得分: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。如果您的data.frame被称为dat
,那么:
dat$group <- ct
应该这样做。