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

在R中使用mice将DataFrame转为mids对象时遇错误求助

解决as.mids转换时的"Original data not found"错误

错误的核心原因是:mice包的as.mids()函数要求长格式数据必须包含原始未插补的数据(标记为.imp=0的行),你的示例代码里只生成了1-10的插补数据集,缺少.imp=0的原始数据组,因此触发报错。

修正示例代码的步骤

要让转换成功,需要先把原始数据(即未插补的mtcars)作为.imp=0的组添加到长格式数据中,再执行转换:

library(mice)

# 原始数据
df <- mtcars

# 先添加.imp=0的原始数据组
new_df <- cbind(df, .imp = 0)

# 循环生成1-10的插补组
for (x in 1:10){
  # 生成当前插补组的标记
  imp_tag <- rep(x, nrow(df))
  # 绑定到数据(这里用mtcars模拟插补后的数据,实际场景替换为你的插补结果)
  df2 <- cbind(df, .imp = imp_tag)
  # 合并到总数据
  new_df <- rbind(new_df, df2)
}

# 转换为mids对象
df_imp <- as.mids(new_df)

针对你的实际场景(从SPSS导入的CSV)

你从SPSS导出的CSV里,应该只包含了插补后的1-N组数据,缺少原始数据(.imp=0)。解决方法如下:

  1. 找到你最初用mice插补前的原始数据集(或者从SPSS里确认是否有保留原始数据的行)。
  2. 给原始数据集添加.imp=0的列,然后将其与SPSS导出的插补数据(确保它们的.imp列是1,2,...N)合并成一个长格式DataFrame。
  3. 再用as.mids()转换即可。

示例代码(假设你已加载原始数据original_df和SPSS导入的插补数据spss_imp_df):

# 给原始数据添加.imp=0标记
original_df$.imp <- 0

# 合并原始数据和插补数据(注意spss_imp_df的.imp列应该是1到N的整数)
combined_df <- rbind(original_df, spss_imp_df)

# 转换为mids对象
final_mids <- as.mids(combined_df)

验证转换结果

转换完成后,可以用以下命令验证:

# 查看mids对象的基本信息
summary(final_mids)
# 提取某一组插补数据
complete(final_mids, action = 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:36:20