R语言按向量匹配数据框对应行并对adj_coords列随机抽样
R数据框索引匹配与逐行随机抽样实现
输入数据说明
现有数据框df结构如下:
indx adj_coords 1 1 2, 3, 4, 5, 6, 7 2 2 1, 3, 7, 8, 9, 10 3 3 1, 2, 4, 10, 11, 12 4 4 1, 3, 5, 12, 13, 14 5 5 1, 4, 6, 14, 15, 16 6 6 1, 5, 7, 16, 17, 18
向量vec定义如下:
vec <- c(1,4,5,3,1)
实现需求
- 按
vec中的元素匹配df里对应indx的adj_coords值,生成长度为5的新数据框 - 对新数据框每行的
adj_coords字符串拆分后随机抽取1个值,存入新增列sampled_adj_coords
实现代码
用R基础函数即可完成,无需安装第三方包:
# 步骤1:索引匹配生成初始结果表 result <- data.frame( vec = vec, adj_coords = df$adj_coords[match(vec, df$indx)], stringsAsFactors = FALSE ) # 步骤2:逐行拆分逗号分隔的字符串,随机抽1个值 result$sampled_adj_coords <- sapply( strsplit(result$adj_coords, ", "), function(x) sample(x, 1) )
如果需要固定抽样结果方便复现,在抽样代码前运行set.seed(任意整数作为随机种子)即可。如果adj_coords列是因子类型,提前运行df$adj_coords <- as.character(df$adj_coords)转成字符串类型再处理。
内容的提问来源于stack exchange,提问作者locket
相关产品推荐
相关产品推荐

