加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

dplyr – 聚合不正确?

发布时间:2020-12-14 05:01:00 所属栏目:百科 来源:网络整理
导读:我有dplyr的som问题,group_by函数没有按预期工作.使用汇总,我希望得到输入到group_by语句中的id和year的每个唯一组合的var1的均值. 此代码应创建一个带有id年观察的df,其中我想为每个id和year组合聚合var 1的均值.但是,这不能按预期工作,输出会忽略id,而只会
我有dplyr的som问题,group_by函数没有按预期工作.使用汇总,我希望得到输入到group_by语句中的id和year的每个唯一组合的var1的均值.

此代码应创建一个带有id年观察的df,其中我想为每个id和year组合聚合var 1的均值.但是,这不能按预期工作,输出会忽略id,而只会在年份聚合.

df <- data.frame(id=c(1,1,2,3,4,5),year=c(2013,2013,2012,2013),var1=rnorm(10))

dplyr代码:

dfagg <- df %.%
  group_by(id,year) %.%
  select(id,year,var1) %.%
  summarise(
    var1=mean(var1)
    )

结果:

> dfagg
Source: local data frame [8 x 2]
Groups: year

  year        var1
1 2013  0.22924025
2 2012 -0.93073687
3 2013 -0.82351583
4 2012  0.05656113
5 2013 -0.21622021
6 2012  1.91158209
7 2013 -2.67003628
8 2013 -0.72662276

知道发生了什么事吗?

为了确保没有其他包中断dplyr函数,我尝试了以下相同的结果.

dfagg <- df %.%
  dplyr::group_by(id,year) %.%
  dplyr::select(id,var1) %.%
  dplyr::summarise(
    var1=mean(var1)
    )

解决方法

我认为你不需要select()行.只是使用group_by()和summarize()为我做了诀窍.

library(dplyr)

df <- data.frame(id=c(1,var1=rnorm(10))
df %>%
  group_by(id,year) %>%
  summarise(mean_var1=mean(var1)) -> dfagg

结果:

id  year   mean_var1
  (dbl) (dbl)       (dbl)
1     1  2013 -1.20744511
2     2  2012 -0.59159641
3     2  2013 -0.03660552
4     3  2012 -0.38853566
5     3  2013 -1.76459495
6     4  2012 -0.66926387
7     4  2013  0.70451751
8     5  2013 -0.82762769

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读