【发布时间】:2021-12-12 22:39:57
【问题描述】:
我正在尝试编写一个函数来返回 FE 回归系数和标准误差,因为我需要运行大量回归。数据可能如下所示。列名中有很多特殊字符,如空格、-、&、数字等。
library(data.table)
library(fixest)
library(broom)
data<-data.table(Date = c("2020-01-01","2020-01-01","2020-01-01","2020-01-01","2020-02-01","2020-02-01","2020-02-01","2020-02-01"),
Card = c(1,2,3,4,1,2,3,4),
A = rnorm(8),
B = rnorm(8),
C = rnorm(8),
D = rnorm(8)
)
setnames(data, old = "A", new = "A-A")
setnames(data, old = "B", new = "B B")
setnames(data, old = "C", new = "C&C")
setnames(data, old = "D", new = "1-D")
感谢@Ronak Shah 和@Laurent Bergé,他们提供了如下两个优秀的候选人
estimation_fun <- function(col1,col2,df) {
regression<-feols(as.formula(sprintf('%s ~ %s | Card + Date', col1, col2)), df)
est =tidy(regression)$estimate
se = tidy(regression)$std.error
output <- list(est,se)
return(output)
}
或者
estimation_fun <- function(lhs, rhs, df) {
regression<-feols(.[col1] ~ .[col2] | Card + Date, df)
est =tidy(regression)$estimate
se = tidy(regression)$std.error
output <- list(est,se)
return(output)
}
如果列名只是“A”、“B”、“C”等,它们都可以工作。但是,试试这个功能
estimation_fun("A-A","B B",data)
Error in feols(as.formula(sprintf("%s ~ %s | Card + Date", col1, col2)), :
Argument 'fml' could not be evaluated: <text>:1:9: unexpected symbol
1: A-A ~ B B
^
我正在寻找一种可以处理这种情况的 feols 公式格式。 或者欢迎任何建议,即直接删除列名中的这些特殊字符。 (但这是次优的)
感谢这里的伟大社区!
【问题讨论】:
标签: r regression