首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dplyr‘`rowwise()’group是否与`group_by()组相同?

dplyr‘`rowwise()’group是否与`group_by()组相同?
EN

Stack Overflow用户
提问于 2020-05-04 16:39:04
回答 1查看 543关注 0票数 1
代码语言:javascript
运行
复制
library(tidyverse)
mtcars %>% group_by(cyl) %>% is_grouped_df()
#> [1] TRUE

我可以根据变量对数据帧进行分组,并确认是否使用is_grouped_df()函数对其进行分组(如上文所示)。

我可以对dplyr rowwise()函数运行相同的分析,而且rowwise()似乎不按行对数据集进行分组。我有一个问题,阅读帮助页(?rowwise)不能清楚地回答我的问题。

组按行输入

描述:行()允许您在数据帧上按时间计算行。当向量化函数不存在时,这是最有用的。

行级tibble在被group_by()、ungroup()或as_tibble()显式删除之前保持其逐行状态。

我的问题是:在调用rowwise()函数之后,是否需要调用管道中的ungroup()函数来取消对数据集的分组?还是默认情况下这样做?下面的管道建议不对包含rowwise()的管道进行分组:

代码语言:javascript
运行
复制
mtcars %>% rowwise() %>% is_grouped_df()
#> [1] FALSE

这句话让我感到困惑,“逐行tibble保持其逐行状态,直到由.ungroup().显式删除”。为什么我需要ungroup()一个已经没有分组的tibble呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-04 16:55:47

有趣的观察。这可能是is_grouped_df的一个bug,除非它某种程度上是我不知道的特性。但是,考虑到下面所做的测试,我确实认为ungroup很重要(请参阅注释):

代码语言:javascript
运行
复制
library(tidyverse)

mtcars %>% select(1:3) %>% rowwise() %>% head(2)
#> Source: local data frame [2 x 3]
#> Groups: <by row>
##### ^ THIS DOES HAVE A GROUP ####
#> 
#> # A tibble: 2 x 3
#>     mpg   cyl  disp
#>   <dbl> <dbl> <dbl>
#> 1    21     6   160
#> 2    21     6   160

mtcars %>% select(1:3) %>% rowwise() %>% mutate(n()) %>% head(2)
#> Source: local data frame [2 x 4]
#> Groups: <by row>
#> 
#> # A tibble: 2 x 4
#>     mpg   cyl  disp `n()`
#>   <dbl> <dbl> <dbl> <int>
#> 1    21     6   160     1
#> 2    21     6   160     1
mtcars %>% select(1:3) %>% mutate(n()) %>% head(2)                                              
#>   mpg cyl disp n()
#> 1  21   6  160  32
#> 2  21   6  160  32

##### ^ THIS IS EXPECTED AND THE n BEHAVES DIFFERENTLY WHEN THE ROWWISE() IS APPLIED ####

##### IF WE WANT TO RESTORE "NORMAL" BEHAVIOR, IT'S PROBABLY WISE TO UNGROUP IN ORDER TO LOSE THE ROWWISE OPERATIONS #####
mtcars %>% select(1:3) %>% rowwise() %>% ungroup %>% mutate(n()) %>% head(2)
#> # A tibble: 2 x 4
#>     mpg   cyl  disp `n()`
#>   <dbl> <dbl> <dbl> <int>
#> 1    21     6   160    32
#> 2    21     6   160    32

## ^ NORMAL AFTER UNGROUP
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61597222

复制
相关文章

相似问题

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