1 min read

【技术·R】📊 R实现随机分组

思想是,假设数据有n行,且可十等分。 随机给出均匀分布,110, 给这个数据表打上标签,按照标签分类, 实现随机分类十组。

实现的过程如下。

使用runif函数。

runif(n, min = 1, max = 10) 定义好最大值和最小值。 n表示样本模拟的大小。

library(tidyverse)
## Warning: 程辑包'tidyverse'是用R版本4.1.3 来建造的
## Warning: 程辑包'forcats'是用R版本4.1.3 来建造的
## -- Attaching core tidyverse packages ------------------------ tidyverse 2.0.0 --
## v dplyr     1.0.7     v readr     2.1.1
## v forcats   1.0.0     v stringr   1.4.0
## v ggplot2   3.3.5     v tibble    3.1.6
## v lubridate 1.8.0     v tidyr     1.1.4
## v purrr     0.3.4     
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
## i Use the [conflicted package](http://conflicted.r-lib.org/) to force all conflicts to become errors
runif(10000, min = 1, max = 11) %>% as.integer() %>% table()/100
## .
##     1     2     3     4     5     6     7     8     9    10 
## 10.01  9.73  9.89  9.89 10.26  9.69 10.07 10.03 10.45  9.98

因为runif的bug,导致数据需要取整,as.integer()table()证明分布应该是均匀的。

因此把这个变量加入到数据表, runif(10000, min = 1, max = 11) %>% as.integer(),作为一个变量, 然后dplyr::group_by(这个变量)就可以分组了。