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

如何将Loess平滑回归结果导出至CSV或Excel文件

嘿,作为R新手能走到建模+画图这一步已经超棒啦!针对你想导出Loess回归线数值的需求,我给你整理了两种实用的方法,适配你已经用ggplot画图的场景:

提取并导出Loess回归线数值的方法

方法1:从已有的ggplot对象直接提取拟合数据

如果你已经用ggplot()画好了带Loess平滑线的图,比如代码大概是这样:

library(ggplot2)
p <- ggplot(Top_Songs_transformed, aes(x = Report.Date, y = Payment, color = Track)) +
  geom_point() +
  geom_smooth(method = "loess", se = FALSE)

那你可以直接从这个ggplot对象里提取Loess拟合的数值:

# 先确认平滑线所在的图层索引(用layer_names(p)可查看所有图层)
loess_fit_data <- layer_data(p, layer = 2) # 一般geom_smooth是第2层,可根据实际调整

# 整理成清晰的格式,对应原数据的字段
loess_fit_clean <- loess_fit_data %>%
  select(x, y, group) %>%
  rename(Report.Date = x, Fitted_Payment = y, Track = group) %>%
  # 把分组序号转换回原Track的因子水平
  mutate(Track = factor(Track, levels = 1:3, labels = levels(Top_Songs_transformed$Track)))

方法2:手动拟合Loess模型(更灵活,适合分组场景)

如果你想精准控制拟合参数(比如调整Loess的平滑度span),可以直接用stats::loess()函数按歌曲分组拟合,生成预测值:

library(dplyr)

# 按Track分组,拟合Loess并生成对应日期的预测值
loess_preds <- Top_Songs_transformed %>%
  group_by(Track) %>%
  do({
    # 把日期转成数值型用于Loess拟合
    model <- loess(Payment ~ as.numeric(Report.Date), data = ., span = 0.75)
    # 生成每个日期对应的拟合值
    preds <- data.frame(
      Report.Date = .$Report.Date,
      Fitted_Payment = predict(model)
    )
    preds
  }) %>%
  ungroup()

导出到CSV/Excel

拿到整理好的拟合数据后,就可以轻松导出了:

  • 导出到CSV:
write.csv(loess_preds, "loess_regression_results.csv", row.names = FALSE)
  • 导出到Excel(需要先安装writexl包):
install.packages("writexl")
library(writexl)
write_xlsx(loess_preds, "loess_regression_results.xlsx")

小提示

  • 如果你的Loess线是所有歌曲一起拟合的,去掉group_by(Track)即可
  • 调整loess()里的span参数可以改变平滑度:值越小越贴近数据,越大越平滑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:10:46