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 潜水,是否可以使用 cut 函数?. 提前致谢。尼古拉

尼古拉

4

1 回答 1

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 返回一个向量,所以如果需要,您可以将输出以百分比表示:

> 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

应该这样做。

于 2012-08-14T14:25:59.627 回答