R 按频率划分的分组数据

R 按频率划分的分组数据,r,R,我对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

我对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分割。提前谢谢。尼古拉


Nicola

cut
为您提供了一个系数,其中级别是您指定的分组

表格
采用一个向量,告诉您每个级别中有多少个元素

将两者结合起来,你应该能够做你想做的事情:

> 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

dat$group
cut
为您提供了一个系数,其中级别是您指定的分组

表格
采用一个向量,告诉您每个级别中有多少个元素

将两者结合起来,你应该能够做你想做的事情:

> 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

dat$group不清楚您想要什么,但是
cut()
会出现在答案中。您签出了吗?假设您的数据集名为dat。您可以这样做
newdat@dickoa非常感谢。它几乎接近我要找的东西。您认为是否可以将媒体数据按分位数而不是固定值分割?再次感谢。不清楚您想要什么,但答案中会出现
cut()
。您签出了吗?假设您的数据集名为Dat。您可以这样做
newdat@dickoa非常感谢。它几乎接近我要找的东西。您认为是否可以将媒体数据按分位数而不是固定值分割?再次感谢您。感谢弗里德曼,我还想将正确的“immagine”编号与组关联。这才是我真正想要的。再次谢谢你。请注意,a将在未来获得更好的帮助。谢谢这是我正在寻找的。我必须深入使用“切割”功能。NikI还希望将数据除以其置信区间。是否有可能使用切割函数使不同的组被95%CI分割。提前谢谢。NicolaThanks Friedman,我还想将正确的“immagine”编号与组关联。这才是我真正想要的。再次谢谢你。请注意,a将在未来获得更好的帮助。谢谢这是我正在寻找的。我必须深入使用“切割”功能。NikI还希望将数据除以其置信区间。是否有可能使用切割函数使不同的组被95%CI分割。提前谢谢。尼古拉