思想是,假设数据有\(n\)行,且可十等分。 随机给出均匀分布,\(1 \to 10\), 给这个数据表打上标签,按照标签分类, 实现随机分类十组。
实现的过程如下。
使用runif
函数。
runif(n, min = 1, max = 10)
定义好最大值和最小值。
\(n\)表示样本模拟的大小。
library(tidyverse)
## Warning: 程辑包'tidyverse'是用R版本3.6.3 来建造的
## -- Attaching packages --------------------------------------------------------------------------- tidyverse 1.3.0 --
## √ ggplot2 3.3.2 √ purrr 0.3.4
## √ tibble 3.0.3 √ dplyr 1.0.2
## √ tidyr 1.1.2 √ stringr 1.4.0
## √ readr 1.3.1 √ forcats 0.5.0
## Warning: 程辑包'ggplot2'是用R版本3.6.3 来建造的
## Warning: 程辑包'tibble'是用R版本3.6.3 来建造的
## Warning: 程辑包'tidyr'是用R版本3.6.3 来建造的
## Warning: 程辑包'readr'是用R版本3.6.3 来建造的
## Warning: 程辑包'purrr'是用R版本3.6.3 来建造的
## Warning: 程辑包'dplyr'是用R版本3.6.3 来建造的
## Warning: 程辑包'stringr'是用R版本3.6.3 来建造的
## Warning: 程辑包'forcats'是用R版本3.6.3 来建造的
## -- Conflicts ------------------------------------------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
runif(10000, min = 1, max = 11) %>% as.integer() %>% table()/100
## .
## 1 2 3 4 5 6 7 8 9 10
## 9.77 10.19 10.00 10.46 10.01 9.69 9.74 10.38 10.37 9.39
因为runif
的bug,导致数据需要取整,as.integer()
,
table()
证明分布应该是均匀的。
因此把这个变量加入到数据表,
runif(10000, min = 1, max = 11) %>% as.integer()
,作为一个变量,
然后dplyr::group_by(这个变量)
就可以分组了。