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

寻求基于真实数据生成伪数据的R包用于代码验证

生成匹配原数据结构的伪数据的R工具

1. fake 包

这个包完全贴合你的需求,能直接基于输入的dataframe生成列名、数据类型、观测数完全匹配的伪数据,支持因子、数值、字符、日期等多种类型。

# 安装包
install.packages("fake")
library(fake)

# 假设你的原数据对象是df
set.seed(123) # 确保伪数据可复现
fake_df <- fake_df(df, n = nrow(df)) # n指定生成的观测数,与原数据保持一致

它会自动适配原数据的列属性:因子列会保留原有的水平集合,数值列生成符合基础分布的随机数,日期列会在原数据的日期范围内生成随机值。

2. 基础R + data.table 自定义实现

如果不想安装新包,用基础R结合data.table可以灵活定制伪数据生成规则:

library(data.table)
set.seed(123)

fake_df <- copy(df) # 复制原数据的结构框架
for (col in names(fake_df)) {
  col_type <- class(fake_df[[col]])
  if (col_type %in% c("numeric", "integer")) {
    fake_df[[col]] <- rnorm(nrow(fake_df), mean = 0, sd = 1) # 可替换为runif()等其他分布
  } else if (col_type == "factor") {
    fake_df[[col]] <- sample(levels(fake_df[[col]]), nrow(fake_df), replace = TRUE)
  } else if (col_type == "character") {
    fake_df[[col]] <- stringi::stri_rand_strings(nrow(fake_df), length = 6) # 生成指定长度的随机字符串
  } else if (col_type == "Date") {
    date_range <- range(df[[col]], na.rm = TRUE)
    fake_df[[col]] <- sample(seq(date_range[1], date_range[2], by = "day"), nrow(fake_df), replace = TRUE)
  }
}

这种方式可以根据需求自由调整每列的生成逻辑,比如给数值列设置特定的均值范围,或者给字符列生成特定格式的内容。

3. simstudy 包

该包能从原数据自动推导数据结构模板,再生成对应行数的伪数据,还支持模拟原数据的缺失值分布:

install.packages("simstudy")
library(simstudy)

set.seed(123)
# 从原数据生成数据定义模板
data_def <- genDataDef(df)
# 生成与原数据行数一致的伪数据
fake_df <- genData(nrow(df), data_def)

内容的提问来源于stack exchange,提问作者Maarölli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:07:15