使用binCounts进行频率分配

时间:2018-02-02 06:40:00

标签: r frequency-distribution

我为客户提供了Ages的数据集,我希望在9年的时间差之间进行频率分配。

Ages=c(83,51,66,61,82,65,54,56,92,60,65,87,68,64,51,
       70,75,66,74,68,44,55,78,69,98,67,82,77,79,62,38,88,76,99,
       84,47,60,42,66,74,91,71,83,80,68,65,51,56,73,55)

我想要的结果类似于低于共享的表,变量名可以不同(如你所愿)

我可以使用binCounts代码吗?如果是,您是否可以帮助我使用代码而不确定此代码中的bxidxs

binCounts(x, idxs = NULL, bx, right = FALSE)  ??


Age Count
38-46   3
47-55   7
56-64   7
65-73   14
74-82   10
83-91   6
92-100  3

非常赞赏!

1 个答案:

答案 0 :(得分:1)

我不知道binCounts甚至是它所包含的包,但我有一个简单的功能:

 data.frame(table(cut(Ages,0:7*9+37)))
      Var1 Freq
1  (37,46]    3
2  (46,55]    7
3  (55,64]    7
4  (64,73]   14
5  (73,82]   10
6  (82,91]    6
7 (91,100]    3

要完全复制结果:

lowerlimit=c(37,46,55,64,73,82,91,101)
Labels=paste(head(lowerlimit,-1)+1,lowerlimit[-1],sep="-")#I add one to have 38 47 etc
group=cut(Ages,lowerlimit,Labels)#Determine which group the ages belong to
tab=table(group)#Form a frequency table
as.data.frame(tab)# transform the table into a dataframe
   group Freq
1  38-46    3
2  47-55    7
3  56-64    7
4  65-73   14
5  74-82   10
6  83-91    6
7 92-100    3

所有这些可以合并为:

data.frame(table(cut(Ages,s<-0:7*9+37,paste(head(s+1,-1),s[-1],sep="-"))))