首页 > 解决方案 > 我需要一个函数来创建一个新变量,比如 Y_(i,t),方法是在面板数据集中贬低 X_(i,t) 变量,其中时间 T = 18 和国家/地区 n = 48

问题描述

我是 R 应用程序的新手。我需要一个函数来创建一个新变量,例如 Y_(i,t),方法是在具有时间 T =18 和国家/地区 n = 48 的面板数据中贬低 X_(i,t) 变量。即 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

标签: rfor-looppanel-dataparallel-foreach

解决方案


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

继续您的示例,您可以简单地执行以下操作:

Within(pdat$X)

推荐阅读