放大滤波和函数以用于R中的循环
这已经发生在我身上很多次了,我想找到一个更简单的方法来解决它 我正在创建一个函数,希望它在其中循环 假设我有以下专栏放大滤波和函数以用于R中的循环,r,function,for-loop,data.table,tidyverse,R,Function,For Loop,Data.table,Tidyverse,这已经发生在我身上很多次了,我想找到一个更简单的方法来解决它 我正在创建一个函数,希望它在其中循环 假设我有以下专栏 id <- c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4) year <- c(2000, 2002, 2004, 2000, 2002, 2004, 2000, 2002, 2004, 2000, 2002, 2004) pre.post <- c(0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1) y
id <- c(1, 1, 1, 2, 2, 2,
3, 3, 3, 4, 4, 4)
year <- c(2000, 2002, 2004,
2000, 2002, 2004,
2000, 2002, 2004,
2000, 2002, 2004)
pre.post <- c(0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1)
y <- c(100, 200, 200,
400, 500, 600,
700, 800, 300,
200, 100, 200)
df <- data.frame (id, year, pre.post, y)
基本上,我希望R进入年的每个值
,过滤掉那些滞后pre.post
为1
的值,然后运行该模型
我尝试了许多不同的for循环,例如:
for(i in unique(df$year)) {
year.df <- filter(df[year == i, ], lag(pre.post) != 1)
fixest::feols(y ~ pre.post| ags + year, data = year.df, panel.id = ~ags+year)
}
和其他类似的东西,但我从来没有得到我想要的东西。我认为,问题主要在于循环的过滤位。我还尝试创建自己的函数,这会更好,但我也没有得到它。非常感谢 你需要这样的东西吗
library(dplyr)
df %>%
filter(lag(pre.post) != 1) %>%
group_by(year) %>%
summarise(test = list(feols(y ~ pre.post| id + year, data = cur_data_all(),
panel.id = ~id+year))) -> result
是的,看起来不错。我想如果我每年都能扩大规模,那就行了。然而,当我只是按原样运行它时,它从fixeols函数“error:Problem with
summary()
inputtest
.x数据中没有固定效应变量年”中给出了一个错误。这不是真的使用cur\u data\u all()
而不是cur\u data()
。哦,现在我得到了一个结果列表,谢谢!我不太清楚的问题是:filter命令是否分别为每个组运行?因为这就是我要找的
Error: object of type 'closure' is not subsettable
library(dplyr)
df %>%
filter(lag(pre.post) != 1) %>%
group_by(year) %>%
summarise(test = list(feols(y ~ pre.post| id + year, data = cur_data_all(),
panel.id = ~id+year))) -> result