问题描述
在 R 中添加差分变量的正确语法是什么?类似于 Stata 中的“D.variable”命令。 我尝试在 R 中生成一个差分变量。我尝试了多种方法,但无法获得与 Stata 相同的输出。 R代码:
(setf 7 (+ 1 7))
输出:
DF <- DF%>%
group_by(id) %>%
mutate(D_MDR = F_MDR - dplyr::lag(F_MDR))
summary(DF$D_MDR)
R 代码:
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
-0.7724 -0.1456 -0.0098 -0.0113 0.1232 0.8416 1441
输出:
DFP1 <- pdata.frame(DF,index = c("id"))
DFP1$D_MDR <- diff(DFP1$F_MDR,lag = 1,differences = 1)
skim(DFP1$D_MDR)
这是Stata代码:
-- Data Summary ------------------------
Values
Name DFP1$D_MDR
Number of rows 10433
Number of columns 1
_______________________
Column type frequency:
numeric 1
________________________
Group variables None
-- Variable type: numeric ----------------------------------------------------------------------------------
# A tibble: 1 x 11
skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
* <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 data 1441 0.862 -0.0113 0.207 -0.772 -0.146 -0.00978 0.123 0.842 ▁▃▇▂▁
Stata 输出:
tsset id year
gen D_MDR = D.F_MDR
sum D_MDR
解决方法
如果您想使用包 diff
中的 plm
,这应该可以满足您的需求:
DFP1 <- pdata.frame(DF,index = c("id","year"))
DFP1$D_MDR <- diff(DFP1$F_MDR)
相对于您的代码,我在 pdata.frame
的索引参数中添加了时间维度。我删除了 diff
的参数(lag = 1
是默认值,difference
不是 plm::diff
的有效参数)。
请注意,如果 plm::diff
可以正确解释时间维度(最好使用时间维度的整数值)。