首页 > 解决方案 > 如何在面板数据r中绘制滞后变量

问题描述

我得到了一个公司数据集(不平衡面板),如下所示:

id   year   tfp    c_sales    
A    2012    1.52   14.56
A    2013    1.82   15.6
A    2014    1.67   16.3
A    2015    1.72   18.36
...   ...    ...    ...
B    2012    1.58   17.56
B    2013    1.83   12.6
B    2014    1.62   19.3
B    2015    1.96   14.36
...   ...    ...    ... 
C    2012    1.2   13.4
C    2013    1.6   16.3
...   ...    ...    ...

以此类推……直到 2019 年。

我如何绘制tfp2014 年与c_sales2015 年的对比图?

我想要一个散点图,横轴显示tfp2014 年的值,纵轴显示c_sales2015 年的值。

由于tfp是衡量生产力的指标,我希望看到一个散点图,它告诉我 2014 年生产力高的公司在 2015 年的销售额或多或少。

我试图用ggplot制作一个情节,但我不清楚如何去做。

(此外,我怎样才能进行这样的回归?使用固定年份的自变量)

标签: rggplot2graphpanel-data

解决方案


你可以这样做

(虽然数据真的很有用!)

library(tidyverse)

df=tribble(
~id, ~year, ~tfp, ~c_sales, 
"A", 2012, 1.52, 14.56, 
"A", 2013, 1.82, 15.6, 
"A", 2014, 1.67, 16.3, 
"A", 2015, 1.72, 18.36, 
"B", 2012, 1.58, 17.56, 
"B", 2013, 1.83, 12.6, 
"B", 2014, 1.62, 19.3, 
"B", 2015, 1.96, 14.36, 
"C", 2012, 1.2, 13.4, 
"C", 2013, 1.6, 16.3, 
"C", 2014, 1.7, 17.3, 
"C", 2015, 1.82, 20.33
) 

f = function(data, group, xYear, yYear)(
  tibble(
    xYear = xYear,
    yYear = yYear,
    tfp = data %>% filter(year==xYear) %>% pull(tfp),
    c_sales = data %>% filter(year==yYear) %>% pull(c_sales)
  )
)


df = df %>% 
  group_by(id) %>% 
  group_modify(f, xYear=2014, yYear=2015) 

df

输出

# A tibble: 3 x 5
# Groups:   id [3]
  id    xYear yYear   tfp c_sales
  <chr> <dbl> <dbl> <dbl>   <dbl>
1 A      2014  2015  1.67    18.4
2 B      2014  2015  1.62    14.4
3 C      2014  2015  1.7     20.3

接下来

df %>% ggplot(aes(tfp, c_sales))+
  geom_point()

在此处输入图像描述


推荐阅读