【问题标题】:Filtering Results of a Regression Output + Exporting the Subsequent Data Frame to CSV/XLS/XLSX [closed]过滤回归输出的结果 + 将后续数据帧导出到 CSV/XLS/XLSX [关闭]
【发布时间】:2020-01-29 20:09:42
【问题描述】:

我的问题是双重的。首先,我想知道是否有一种方法可以过滤回归分析的结果,类似于在 SPSS 中完成的方法。

我已经看到这个问题之前在这里被问过,但我一直对在运行回归之前是否需要过滤数据感到困惑,或者是否有代码添加到 lm/glm 命令以获取要过滤的结果。例如,我的数据如下所示:

country  year  number of events
1        2016  208
1        2017  98
2        2016  107
2        2017  316
3        2016  509
3        2017  421

我希望我的输出按国家/地区对回归结果进行排序,如下所示:

country  var coef  stde
1         1   xxx   xxx
1         2   xxx   xxx
1         3   xxx   xxx
2         1   xxx   xxx
2         2   xxx   xxx
2         3   xxx   xxx

最好的方法是什么?

其次,我想知道是否有办法将包含这些数据的数据框导出为 Excel 格式,以便在 ArcGIS 等其他程序中使用?

【问题讨论】:

    标签: r excel dataframe regression


    【解决方案1】:
    library(tidyverse)
    library(broom)
    
    df <- data.frame(country = c(1,1,2,2,3,3), 
                     year = c(2016,2017,2016,2017,2016,2017), 
                     number_of_events = c(208, 98, 107, 316, 509, 421))
    
    colnames(df)[3] <- "number of events"
    

    您必须在回归之前进行过滤,否则lm`() 将运行所有行。您可以使用来自dplyrgroup_by 执行此操作。您按国家/地区分组,然后将过滤后的数据通过管道传输到lm()。我不知道你的回归公式是什么,所以我只是回归了一年中的事件数量。然后,您可以使用 broom 包中的 tidy() 函数来创建系数数据框。您可以检查数据框以删除不需要的元素。使用write.csv() 函数可以轻松地将数据框导出到excel。

    df_fit <- df %>% group_by(country) %>%
      do(fiitedmod = lm(`number of events` ~ year , data = .))
    
    df_coef <- tidy(df_fit, fiitedmod)
    df_coef
    
    write.csv(df_coef, "data.csv", row.names = FALSE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 2014-01-17
      相关资源
      最近更新 更多