首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用dplyr汇总纵向数据

使用dplyr汇总纵向数据
EN

Stack Overflow用户
提问于 2017-01-07 07:27:41
回答 0查看 553关注 0票数 0

我有一个数据帧,看起来像这样:

代码语言:javascript
运行
复制
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))

生成如下所示的数据:

代码语言:javascript
运行
复制
# 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号人的真实情况。我希望能够获得以下数据框架:

代码语言:javascript
运行
复制
# 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

或者,假设我想要查看2013年到2014年的var2差异,我希望获得以下数据框架:

代码语言:javascript
运行
复制
# 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中的加权平均移动等。这些只是我正在研究的查询类型的一些示例。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41516018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档