【问题标题】:How to generate frequency table from raw data in R如何从R中的原始数据生成频率表
【发布时间】:2012-11-17 01:33:44
【问题描述】:

我是 R 新手。我想从原始数据(小数)生成频率表,例如:

x
      V1
1  10.10
2  46.65
3  53.60
4  38.50
5  45.95
6  12.25
7  59.60
8  23.30
9  11.05
10 58.35
11 40.20
12 11.05
13 10.45
14 26.45
15 13.25
16 21.15
17 35.00
18 29.05
19 25.40
20 47.20
21 42.45
22 57.30
23 55.65
24 56.50
25 26.95
26 59.65
27 32.10
28 29.00
29 34.75
30 21.65

变成这样:

Class            Frequency
(10.00 - 19.99)         6
(20.00 - 29.99)         8
(30.00 - 39.99)         4
(40.00 - 49.99)         5
(50.00 - 59.99)         7

我使用下面的代码:

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

但我得到这样的东西:

cut.default(x,breaks = nclass.Sturges(x)) 中的错误:'x' 必须是数字

我应该如何使'x'变成数字?

根据要求:

h

【问题讨论】:

  • 你能做 h

标签: r frequency


【解决方案1】:

x 是一个数据框。 x$V1 是数字。

factor(cut(x$V1, breaks=nclass.Sturges(x$V1)))

【讨论】:

  • 既然cut()已经产生了因子,那么真的有必要运行factor(cut())吗?
【解决方案2】:

如果你知道你正在使用什么断点,你可以使用 histplot=FALSE

hist 将返回直方图类对象(以下示例中的h)。 h$counts 为您提供breaks 参数定义的给定直方图单元格的频率。

> x
 [1] 10.10 46.65 53.60 38.50 45.95 12.25 59.60 23.30 11.05 58.35 40.20 11.05 10.45 26.45 13.25 21.15 35.00 29.05 25.40 47.20
[21] 42.45 57.30 55.65 56.50 26.95 59.65 32.10 29.00 34.75 21.65
> h <- hist(x, plot=FALSE, breaks = c(10,20,30,40,50,60))
> h
$breaks
[1] 10 20 30 40 50 60

$counts
[1] 6 8 4 5 7

$intensities
[1] 0.02000000 0.02666667 0.01333333 0.01666667 0.02333333

$density
[1] 0.02000000 0.02666667 0.01333333 0.01666667 0.02333333

$mids
[1] 15 25 35 45 55

$xname
[1] "x"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"
> h$counts 
[1] 6 8 4 5 7

即使您不知道休息时间,您也可以使用 histplot=FALSE 并获得不错的结果,因为休息时间的默认设置是“Sturges”

> h2 <- hist(x, plot=FALSE)
> h2$breaks
[1] 10 20 30 40 50 60
> h2$counts
[1] 6 8 4 5 7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2012-06-24
    • 2020-03-21
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多