R语言 计算数据集中观测值之间的差异

5t7ly7z5  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(158)

假设我有一个如下的数据集:

| Individual | Year | x1 | x2 |
-------------------------------
|       1      |   1   |  3  |  5  |
|       1      |   2   |  7  |  4  |
|       1      |   3   |  8  |  6  | 
|       2      |   1   |  0  |  6  | 
|       2      |   2   |  9  |  2  |

等等,我想创建一个变量来度量每个人x1相对于上一年的变化,也就是说,我想转换我的数据,使其看起来像:

| Individual | Year | x1 | x2 | Change_x1 |
---------------------------------------------
|       1      |   1   |  3  |  5  |     NA      |
|       1      |   2   |  7  |  4  |      4      |
|       1      |   3   |  8  |  6  |      1      |   
|       2      |   1   |  0  |  6  |     NA      |
|       2      |   2   |  9  |  2  |      9      |

到目前为止,我已经尝试使用以下方法来完成此操作:

data%>%
group_by(Individual,Year)%>%
mutate(Change_x1 = x1 - lag(x1))

但这只返回Change_x1作为NA列。
任何帮助将不胜感激!

rhfm7lfc

rhfm7lfc1#

group_by()中不需要Year

df %>%  
  group_by(Individual) %>% 
  mutate(Change_x1 = x1 - lag(x1))

# A tibble: 5 × 5
# Groups:   Individual [2]
  Individual  Year    x1    x2 Change_x1
       <dbl> <dbl> <dbl> <dbl>     <dbl>
1          1     1     3     5        NA
2          1     2     7     4         4
3          1     3     8     6         1
4          2     1     0     6        NA
5          2     2     9     2         9

相关问题