我想请求的帮助:,我试图在循环中自动执行一系列任务。基本上,它运行一系列的回归,存储结果并将其导出(写入)到csv文件中。
问题:我已经多次尝试运行一个“For”循环。我不知道如何根据current_date列为每个回归创建和命名新变量
数据描述: 链接到数据集是一种表格格式的美国状态数据集(有点类似于Tidy数据)。每个行或观察是指某一特定日期的特定状态。每一列都引用状态任务的一个属性:主要问题:自动化运行一系列回归、按日期存储结果并将其导出(写入)到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”)
}发布于 2020-06-08 17:26:47
在这种情况下使用循环对我来说没有意义。此外,日期似乎不影响回归的输出。你想要这样的东西吗?
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,因为它给了您更多的控制权。
https://stackoverflow.com/questions/62267587
复制相似问题