【问题标题】:different behavior for group_by for data.table vs. data.framedata.table 与 data.frame 的 group_by 的不同行为
【发布时间】:2015-07-12 00:44:08
【问题描述】:

当 dplyr::mutate 用于分组的 data.table 时,分组随后会丢失。 data.frame 不会发生此行为。这是一个错误吗?我正在使用 dplyr_0.4.1 和 data.table_1.9.4。

require(data.table)
require(dplyr)

by_cyl_df <- group_by( mtcars, cyl ) %>%
    dplyr::mutate( . , 
        maxmpg = max( mpg )
    )
groups( by_cyl_df )

[[1]] 圆柱体

by_cyl_dt   <- group_by( as.data.table(mtcars), cyl ) %>%
    dplyr::mutate( . , 
        maxmpg = max( mpg )
    )
groups( by_cyl_dt )

【问题讨论】:

    标签: r data.table dplyr


    【解决方案1】:

    这是open dplyr issue。在mutate 之后,组将被删除。如果您查看这些课程,您会发现这种情况正在发生。

    by_cyl_dt_gg   <- group_by( as.data.table(mtcars), cyl )
    
    class(by_cyl_dt_gg)
    # [1] "grouped_dt" "tbl_dt"     "tbl"        "data.table" "data.frame"
    class(by_cyl_dt_gg %>% mutate(max=max(mpg)))
    # [1] "tbl_dt"     "tbl"        "data.table" "data.frame"
    

    由于它不再分组(groups_dt 类被删除),groups 函数为此类对象返回 NULL

    > dplyr:::groups.tbl_dt
    function (x) 
    {
        NULL
    }
    <environment: namespace:dplyr>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-16
      • 2023-04-11
      • 1970-01-01
      • 2014-11-15
      • 2014-12-15
      • 1970-01-01
      • 2014-06-24
      • 2012-02-29
      相关资源
      最近更新 更多