如何使用累积频率和相对频率在R中生成频率表

如何使用累积频率和相对频率在R中生成频率表,r,histogram,frequency,cumulative-frequency,R,Histogram,Frequency,Cumulative Frequency,我是R的新手。我需要生成一个简单的频率表(如书中所示),其中包含累积频率和相对频率 所以我想从一些简单的数据生成 > x [1] 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10 12 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10 [36] 12 15 19 20 22 20 19 19 19 像这样的桌子: frequency cumulative

我是R的新手。我需要生成一个简单的频率表(如书中所示),其中包含累积频率和相对频率

所以我想从一些简单的数据生成

> x
[1] 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10 12 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10
[36] 12 15 19 20 22 20 19 19 19
像这样的桌子:

            frequency  cumulative   relative
(9.99,11.7]    2            2       0.04545455
(11.7,13.4]    2            4       0.04545455
(13.4,15.1]    1            5       0.02272727
(15.1,16.9]   10           15       0.22727273
(16.9,18.6]   22           37       0.50000000
(18.6,20.3]    6           43       0.13636364
(20.3,22]      1           44       0.02272727
我知道这应该很简单,但我不知道怎么做

我使用此代码获得了一些结果:

factorx <- factor(cut(x, breaks=nclass.Sturges(x)))
as.matrix(table(factorx))

factorx你接近了!有几个函数可以帮助您轻松实现这一点,即
cumsum()
prop.table()
。下面是我可能会把这些放在一起的方式。我做了一些随机数据,但要点是一样的:

#Fake data
x <- sample(10:20, 44, TRUE)
#Your code
factorx <- factor(cut(x, breaks=nclass.Sturges(x)))
#Tabulate and turn into data.frame
xout <- as.data.frame(table(factorx))
#Add cumFreq and proportions
xout <- transform(xout, cumFreq = cumsum(Freq), relative = prop.table(Freq))
#-----
      factorx Freq cumFreq   relative
1 (9.99,11.4]   11      11 0.25000000
2 (11.4,12.9]    3      14 0.06818182
3 (12.9,14.3]   11      25 0.25000000
4 (14.3,15.7]    2      27 0.04545455
5 (15.7,17.1]    6      33 0.13636364
6 (17.1,18.6]    3      36 0.06818182
7   (18.6,20]    8      44 0.18181818
#伪造数据

x基本函数
累计
道具表
应该可以帮助您:

 cbind( Freq=table(x), Cumul=cumsum(table(x)), relative=prop.table(table(x)))
   Freq Cumul   relative
10    2     2 0.04545455
12    2     4 0.04545455
15    1     5 0.02272727
16   10    15 0.22727273
17   16    31 0.36363636
18    6    37 0.13636364
19    4    41 0.09090909
20    2    43 0.04545455
22    1    44 0.02272727
有了cbind和您喜欢的列命名,您将来应该会很容易做到这一点。table函数的输出是一个矩阵,因此这个结果也是一个矩阵。如果这是在大型项目上进行的,那么这样做会更有效率:

tbl <- table(x)
cbind( Freq=tbl, Cumul=cumsum(tbl), relative=prop.table(tbl))

<代码> TBL> P>如果您正在寻找预先打包的东西,请考虑<代码> Fr>(>代码>函数,从<代码> DESCR//COD>包。

library(descr)
x = c(sample(10:20, 44, TRUE))
freq(x, plot = FALSE)
或者使用
ordered()
函数获取累积百分比

freq(ordered(x), plot = FALSE)
要添加“累积频率”列,请执行以下操作:

如果数据缺少值,则会向表中添加有效的百分比列

x = c(sample(10:20, 44, TRUE), NA, NA)
freq(ordered(x), plot = FALSE)

还有一种可能性:

 library(SciencesPo)
    x = c(sample(10:20, 50, TRUE))
    freq(x)

我的建议是检查agricolae包装。。。请查看:

library(agricolae)

weight<-c( 68, 53, 69.5, 55, 71, 63, 76.5, 65.5, 69, 75, 76, 57, 70.5,
+ 71.5, 56, 81.5, 69, 59, 67.5, 61, 68, 59.5, 56.5, 73,
+ 61, 72.5, 71.5, 59.5, 74.5, 63)

h1<- graph.freq(weight,col="yellow",frequency=1,las=2,xlab="h1")

print(summary(h1),row.names=FALSE)
库(agricolae)

Weights还应该为
函数提供一个插件,该函数允许模糊搜索,即
?“累积和”
将引导您走向正确的方向。它工作得很好,让我困惑的是,数据的显示是作为一个数据帧(而不是一个表)完成的。
??
确实不错,但我不是英语母语,所以很难搜索帮助。@El_Hoy-比较
str(as.data.frame(table)(sample(1:10100,TRUE)))
str(table(sample(1:10100,TRUE))
的输出差异。将格式设置为data.frame只会使添加总和和比例更容易。祝你好运这里有很多很好的信息,还有很多喜欢回答问题的人。干杯
library(agricolae)

weight<-c( 68, 53, 69.5, 55, 71, 63, 76.5, 65.5, 69, 75, 76, 57, 70.5,
+ 71.5, 56, 81.5, 69, 59, 67.5, 61, 68, 59.5, 56.5, 73,
+ 61, 72.5, 71.5, 59.5, 74.5, 63)

h1<- graph.freq(weight,col="yellow",frequency=1,las=2,xlab="h1")

print(summary(h1),row.names=FALSE)