如何用R语言从birthwt数据集中随机选取90%的样本?
从birthwt数据集中随机选取90%样本的正确R方法
你写的代码 y1<-sample(bwt11,0.9,replace=TRUE) 存在问题:直接对数据框使用sample()函数会随机抽取列而非行,无法得到你想要的90%样本行。以下是两种正确实现方式:
方法一:基础R实现
通过抽取行索引来筛选样本:
# 设置随机种子保证结果可复现(可选但推荐) set.seed(123) # 获取数据集总行数 total_rows <- nrow(bwt11) # 抽取90%行的随机索引 sample_rows <- sample(total_rows, size = round(0.9 * total_rows), replace = FALSE) # 根据索引筛选样本 y1 <- bwt11[sample_rows, ]
replace=FALSE表示无放回抽样(默认值,可省略),避免同一行被重复选中;round()用来确保抽取的行数为整数(因为0.9×总行数可能不是整数)。
方法二:dplyr包简化实现
如果你习惯使用tidyverse工具链,dplyr的sample_frac()函数可以直接按比例抽取样本:
library(dplyr) set.seed(123) # 可选,保证结果一致 y1 <- bwt11 %>% sample_frac(0.9, replace = FALSE)
内容的提问来源于stack exchange,提问作者Rakib Rahman
相关产品推荐
相关产品推荐

