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

逻辑回归模型DataFrame创建与类SAS格式结果导出问题求助

问题解决:生成完整的地点-性别-剂量组合DataFrame

原代码问题分析

你当前的new_data代码里,location和gender各仅2个元素,而dose是400个元素(100个剂量重复4次)。R会自动循环短向量匹配长向量长度,最终只会得到locationA-Male、locationB-Female这两种组合循环重复,无法覆盖所有4种预期组合(locationA-Male、locationA-Female、locationB-Male、locationB-Female)。

解决方法:生成全组合数据

以下两种方法都能生成每个剂量对应4组地点-性别组合的完整数据集:

方法1:Base R的expand.grid

直接用expand.grid生成三个变量的全笛卡尔积:

# 生成所有变量的全组合
new_data <- expand.grid(
  location = c('locationA', 'locationB'),
  gender = c('Male', 'Female'),
  dose = seq(9, 24, length.out = 100)
)

执行后new_data会包含100*4=400行数据,每个剂量值对应4种地点-性别组合。

方法2:tidyverse的tidyr::crossing

如果习惯tidyverse语法,crossing函数更直观,且结果默认按变量排序:

library(tidyr)

new_data <- crossing(
  location = c('locationA', 'locationB'),
  gender = c('Male', 'Female'),
  dose = seq(9, 24, length.out = 100)
)

后续预测与导出(类SAS格式Excel)

生成完整数据集后,可直接用模型预测概率:

# 预测Damage的概率
new_data$pred_prob <- predict(Model, newdata = new_data, type = "response")

导出类SAS格式的Excel时,可使用openxlsx包设置符合SAS习惯的数值格式:

library(openxlsx)

# 创建SAS风格的数值格式(保留6位小数)
sas_style <- createStyle(numFmt = "0.000000")

# 导出Excel,应用格式
write.xlsx(
  x = new_data,
  file = "logistic_regression_results.xlsx",
  colNames = TRUE,
  rowNames = FALSE,
  styles = list(pred_prob = sas_style)  # 给预测概率列应用格式
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:37:26