【发布时间】:2017-01-06 23:27:40
【问题描述】:
我有一个看起来像这样的数据框:
set.seed(100)
library(dplyr)
df <- tibble(ID = rep(1:4, each = 2),
weight = rep(abs(rnorm(4, 5, 3)), each = 2),
year = rep(2013:2014, 4),
var1 = sample(1:5, 8, rep = TRUE),
var2 = sample(1:5, 8, rep = TRUE))
生成如下所示的数据:
# A tibble: 8 x 5
ID weight year var1 var2
<int> <dbl> <int> <int> <int>
1 1 3.493423 2013 3 2
2 1 3.493423 2014 1 2
3 2 5.394593 2013 4 2
4 2 5.394593 2014 5 4
5 3 4.763249 2013 2 3
6 3 4.763249 2014 2 4
7 4 7.660354 2013 4 3
8 4 7.660354 2014 4 4
我希望快速、简单地推断出事情从一年到下一年的变化。 ID 变量是我的纵向样本中每个人的唯一标识符。
我的想法是使用group_by(ID) 按他们的ID 对我的数据进行分组,然后也许以某种方式使用summarise 函数。我希望我们使用summarise 函数时看到的“折叠”效果。
例如,假设我想按人查看var1 在两年内是否保持不变。我们在上面看到这对于人 3 和 4 来说是正确的。我希望能够获得以下数据框:
# A tibble: 4 x 3
ID weight indicator
<int> <dbl> <lgl>
1 1 3.493423 FALSE
2 2 5.394593 FALSE
3 3 4.763249 TRUE
4 4 7.660354 TRUE
或者,假设我想查看 var2 从 2013 年到 2014 年的差异,我需要以下数据框:
# A tibble: 4 x 3
ID weight diff_var2
<int> <dbl> <dbl>
1 1 3.493423 0
2 2 5.394593 2
3 3 4.763249 1
4 4 7.660354 1
有没有人对如何解决这个问题有任何想法?我不知道这将如何推广到更多年的数据,但目前我只是在处理两年的纵向数据。
最后,例如,我想知道var1 不变的人的加权比例,或var2 中的加权平均移动等。这些只是我正在寻找的各种查询的一些示例进入。
【问题讨论】: