在R中按col_2前缀分层随机抽取指定行数的实现方法
按特定前缀分组随机抽取行的R语言解决方案
要实现从col_2以"p"开头的行中随机选6行、以"q"开头的行中随机选6行的需求,你可以用dplyr包的分组抽样功能完成,具体步骤如下:
代码实现
# 加载dplyr包(未安装先运行install.packages("dplyr")) library(dplyr) # 设置随机种子(可选,保证抽样结果可重复) set.seed(123) # 假设你的数据框名为df,执行分组抽样 sampled_df <- df %>% # 筛选出col_2以p或q开头的行 filter(grepl("^p|^q", col_2)) %>% # 按col_2的首字符分组 group_by(prefix = substr(col_2, 1, 1)) %>% # 每组随机抽取6行 sample_n(size = 6) %>% # 取消分组状态 ungroup() %>% # 移除临时创建的prefix列(可选) select(-prefix)
代码说明
filter(grepl("^p|^q", col_2)):通过正则表达式^p|^q筛选出col_2以p或q开头的行,自动排除以i开头的无关行;group_by(prefix = substr(col_2, 1, 1)):提取col_2的第一个字符作为分组标识,把数据分成"p"和"q"两个独立组;sample_n(size = 6):对每个分组独立执行随机抽样,每组抽取6行;ungroup():取消分组状态,避免后续数据操作受分组限制;select(-prefix):移除临时生成的分组列,保持原数据结构整洁。
内容的提问来源于stack exchange,提问作者Ajrhjnd
相关产品推荐
相关产品推荐

