You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于site与quadrant从其他数据集抽样填充param列?

# 解决方案
### 方法1:使用dplyr(简洁易读,推荐)
通过分组操作直接在对应组内抽样:
```r
library(dplyr)

df_with_param <- df %>%
  group_by(site, quad) %>%
  # 从df_sample的对应site+quad组中随机抽取n个值(n为当前组行数),允许重复抽样
  mutate(param = sample(df_sample$param[df_sample$site == first(site) & df_sample$quad == first(quad)],
                        size = n(), replace = TRUE)) %>%
  ungroup()

# 查看结果
head(df_with_param)

方法2:使用base R(无需额外包)

利用by()函数实现分组抽样:

# 按site和quad分组处理df,为每组抽取对应样本
df$param <- unlist(by(df, list(df$site, df$quad), function(x) {
  # 提取df_sample中对应组的param数据
  group_data <- df_sample$param[df_sample$site == x$site[1] & df_sample$quad == x$quad[1]]
  # 随机抽取与当前组行数匹配的样本,允许重复抽样
  sample(group_data, size = nrow(x), replace = TRUE)
}))

# 查看结果
head(df)

注意事项

如果df中某site+quadrant组的行数超过df_sample对应组的样本数量,必须设置replace=TRUE以允许重复抽样,否则会抛出样本数量不足的错误。

内容的提问来源于stack exchange,提问作者Rspacer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:17:43