簡體   English   中英

data.table與data.frame的group_by的不同行為

[英]different behavior for group_by for data.table vs. data.frame

當在分組的data.table上使用dplyr :: mutate時,分組將隨后丟失。 對於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 )

空值

這是一個公開的dplyr問題 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM