我需要一个函数来创建一个新变量,比如 Y_(i,t) 通过贬低面板数据集中的 X_(i,t) 变量,其中时间 T = 18 和国家,n = 48

I need a function to create a new variable, say Y_(i,t) by demeaning X_(i,t) variable in a panel data set where time, T =18 and countries, n = 48

我是 R 应用程序的新手。我需要一个函数来创建一个新变量,比如 Y_(i,t) 通过贬低面板数据中的 X_(i,t) 变量有时间,T = 18 和国家,n = 48。那就是 Y_(i,t ) = X_(i,t) - x_bar(i) 其中 x_bar(i) 是特定国家/地区的平均值。从 2001 年到 2018 年的相应国家/地区值 X 中减去每个国家/地区的平均值。

下面的数据框是模仿上面实际数据描述的简化版本。

pdat <- data.frame( year = rep(c(2001,2002,2003,2004,2005),5),
                  code = rep(c('GHY', 'DRF', 'JYU','HYU','POI'),each=5), 
                  X = c(60,70,400,300,15,20,200,150,61,71,401,301,400,300,61,71,401,67,145,678,123,456,456,875,246))

pdat <- plm::pdata.frame(pdat, index=c("code", "year"))

pdat

您已经在使用的包 plm 提供了一个函数来执行您所描述的内容,内部转换(例如,用于固定效应面板模型估计)。

继续你的例子,你可以简单地做:

Within(pdat$X)