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

如何使用purrr包基于现有数据框模拟生成新数据?

用purrr批量生成分组正态分布数据

首先构造你的示例数据:

library(tidyverse)

# 示例数据框
df <- tibble(
  x = c(1, 2, 3),
  y = c(5, 7.5, 12.7)
)

核心实现代码

下面的代码会为每个x对应的y值作为均值,生成100个正态分布数值,这里默认标准差设为1(方差为1,你可以根据需求修改sd参数):

# 生成目标数据框
result_df <- df %>%
  # 为每个y生成100个正态分布值,存入列表列
  mutate(generated_y = map(y, ~rnorm(n = 100, mean = .x, sd = 1))) %>%
  # 将列表列展开为多行
  unnest(generated_y) %>%
  # 重命名列以匹配需求
  rename(y = generated_y)

自定义方差的扩展

如果需要为不同的x设置不同的方差,只需在原数据框中新增标准差列,用map2同时传递均值和标准差参数:

# 新增标准差列(方差=标准差²)
df_with_sd <- df %>%
  mutate(sd = c(0.5, 1, 1.5)) # 为每个x指定不同的标准差

# 生成带自定义方差的结果
result_df_custom <- df_with_sd %>%
  mutate(generated_y = map2(y, sd, ~rnorm(n = 100, mean = .x, sd = .y))) %>%
  unnest(generated_y) %>%
  select(x, y = generated_y) # 保留需要的列

结果验证

最终的result_df行数应为300(3个x × 100个数值),每个x对应的100个y值的均值会接近原数据框中的y值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:50:21