在R中如何基于Bootstrap样本首列ID从原数据框提取行创建新数据框
基于Bootstrap样本ID提取原数据行的方法
下面提供几种在R中实现需求的简洁方法:
基础R实现
方式1:按匹配ID筛选(保留原数据顺序)
# 提取ID匹配的所有行 boot_df <- df[df$ID %in% bootSamples$Column1, ]
方式2:按Bootstrap样本顺序提取
如果需要严格遵循bootSamples$Column1的ID顺序(包括重复项),用match()获取位置索引:
# 获取每个ID在原数据框中的位置 id_positions <- match(bootSamples$Column1, df$ID) # 按位置提取行 boot_df_ordered <- df[id_positions, ]
tidyverse(dplyr)实现
如果使用dplyr包,语法更直观:
library(dplyr) # 筛选匹配ID的行 boot_df_dplyr <- df %>% filter(ID %in% bootSamples$Column1) # 按Bootstrap样本顺序提取(含重复) boot_df_dplyr_ordered <- df %>% slice_match(ID == bootSamples$Column1)
注意事项
- 确认
df$ID与bootSamples$Column1的数据类型一致(如均为数值型或字符型),否则会导致匹配失败 - Bootstrap是有放回抽样,提取后的新数据框会包含重复行,这是预期结果
内容的提问来源于stack exchange,提问作者npkp
相关产品推荐
相关产品推荐

