我想请求的帮助:我正在尝试自动执行一系列任务。基本上,它运行一系列回归,存储结果并将其导出(写入)到csv文件中。
问题: 我已经尝试了很多次来运行“ For”循环。我不知道如何基于current_date列为每个回归创建和命名新变量
数据描述: Link to dataset 它是以表格格式(有点类似于Tidy Data)的美国各州的数据集。 每个行或观察值均指特定日期的特定状态。 每列均指状态的一个属性 任务: 主要问题:自动运行一系列回归,按日期存储结果并将其导出(写入)csv文件的过程。
任务顺序:
..... 最后,将所有结果导出到CSV文件中
library(dplyr)
library(broom)
for(i in 1:length(current_date)){
lmtest <- lm( outcome_var [[i]] ~ cumulative_var1_at_current_date + key_cat_var1, data = testdata)
coeff_results<-tidy(lmtest)
model_results<- glance(lmtest)
write.csv(coeff_results, “C:\\Users\\....combined_results.csv”)
}
答案 0 :(得分:1)
在这种情况下使用循环对我来说没有意义。同样,日期似乎并不影响回归的输出。您想要这样的东西吗?
library(dplyr)
library(broom)
current_date <- Sys.Date()
lmtest <- lm( outcome_var ~ cumulative_var1_at_current_date + key_cat_var1, data = testdata)
coeff_results <- tidy(lmtest)
model_results <- glance(lmtest)
write.csv(coeff_results, paste0("coeff-results-", current_date, ".csv"))
write.csv(model_results, paste0("model-results", current_date, ".csv"))
如果没有,请举例说明current_date
是什么,以及它如何影响您的数据。
根据当前日期进行澄清后:
因此,基本上,您需要遍历current_date
列中的唯一日期。然后,您必须保留每天对应的数据。这是一个解决方案。
testdata$current_date <- as.Date(testdata$current_date, format = "%d/%m/%y")
all_dates <- unique(testdata$current_date)
for(i in 1:length(all_dates)) {
lmtest <- filter(testdata, current_date %in% all_dates[i]) %>%
lm( outcome_var ~ cumulative_var1_at_current_date + key_cat_var1, data = .)
coeff_results <- tidy(lmtest)
model_results <- glance(lmtest)
write.csv(coeff_results, paste0("coeff-results-", all_dates[i], ".csv"))
write.csv(model_results, paste0("model-results", all_dates[i], ".csv"))
}
也许在lm中有一个更优雅的方式来遍历子集,但是我个人更喜欢dplyr::filter
,因为它可以给您更多的控制权。