【发布时间】:2019-01-10 21:15:03
【问题描述】:
假设我的面板数据排列如下:
| ID | Year | Var1 |
|----|------|------|
|----|------|------|
| 1 | 2010 | 0 |
| 1 | 2012 | 1 |
--------------------
| 2 | 2010 | 3 |
| 2 | 2012 | 2 |
--------------------
| 3 | 2010 | 1 |
| 3 | 2012 | 3 |
或者,在 R 中:
ID <- c(1, 1, 2, 2, 3, 3)
Year <- c(2010, 2012, 2010, 2012, 2010, 2012)
Var1 <- c(0, 1, 3, 2, 1, 3)
df <- data.frame(ID, Year, Var1)
我现在创建 Var2,当每个面板中第二个时间段的 Var1 大于前一个时间段的 Var1 时,它有条件地分配 1,否则分配 0。
在示例表中,当每个 ID 的 Var1 在 2012 年大于 2010 年的 Var1 时,我会在新创建的 Var2 中分配 1,否则分配 0。
看起来像这样:
| ID | Year | Var1 | Var2 |
|----|------|------|------|
|----|------|------|------|
| 1 | 2010 | 0 | 0 |
| 1 | 2012 | 1 | 1 |
---------------------------
| 2 | 2010 | 3 | 0 |
| 2 | 2012 | 2 | 0 |
---------------------------
| 3 | 2010 | 1 | 0 |
| 3 | 2012 | 3 | 1 |
创建 Var2 的 R 代码是什么样的?我想有一个简单的 tidyverse 方法。
【问题讨论】:
标签: r tidyr panel-data