0

我有一个类似于下面的面板数据集:

  Country Ccode Year Happiness Power ID
1  France    FR 2000      1000  1000 01
2  France    FR 2001      1200  1400 01
3  France    FR 2000      1400  1800 02
4  France    FR 2001      1600  2200 02
5      UK    UK 2000      1000  1000 03
6      UK    UK 2001      1000  1000 03
7      UK    UK 2000      1000  1000 04
8      UK    UK 2001      1000  1000 04

我真正感兴趣的是变量相对于时间的弹性程度。在计算这种弹性时,我想利用面板数据。

这是我走了多远:

library(tidyverse)
df <- df %>%
  arrange(ID, Year)
  group_by(ID) %>%
  mutate_if(is.numeric, funs(d = . - lag(.)))

但这只是计算每个变量的差异,而不是特定变量的方差。

关于如何正确执行此操作的任何建议?

4

1 回答 1

0

如果我理解正确,您想计算每年数值变量的方差吗?

df %>%
  arrange(ID, Year) %>% 
  group_by(Year) %>%
  mutate_if(is.numeric, funs(d = var(.)))

        Country Ccode  Year Happiness Power    ID Happiness_d Power_d  ID_d
  <fct>   <fct> <int>     <int> <int> <int>       <dbl>   <dbl> <dbl>
1 France  FR     2000      1000  1000     1      40000. 160000.  1.67
2 France  FR     2001      1200  1400     1      80000. 320000.  1.67
3 France  FR     2000      1400  1800     2      40000. 160000.  1.67
4 France  FR     2001      1600  2200     2      80000. 320000.  1.67
5 UK      UK     2000      1000  1000     3      40000. 160000.  1.67
6 UK      UK     2001      1000  1000     3      80000. 320000.  1.67
7 UK      UK     2000      1000  1000     4      40000. 160000.  1.67
8 UK      UK     2001      1000  1000     4      80000. 320000.  1.67
于 2018-08-15T12:53:47.290 回答