当我第一次开始用R编程时,我经常会使用dplyr count()。
library(tidyverse)
mtcars %>% count(cyl)
一旦我开始使用apply
函数,我就开始遇到 count()的问题。如果我只是在 count()的末尾添加 ungroup(),问题就会消失。
我没有任何可复制的东西要显示。但是有人可以解释这个问题可能是什么,为什么 ungroup()总是可以解决这个问题,并且在每个 count()之后一致使用 ungroup()有任何弊端。 ),还是在任何 group_by()之后?当然,我假设我不再需要对数据进行计数或汇总后进行分组。
mtcars %>% count(cyl) %>% ungroup()
答案 0 :(得分:13)
您以前遇到的问题来自NOTICE Undefined index: price on line number 28
NOTICE Undefined index: price on line number 28
Array
(
[class] => Array
(
[name] => class 1
[price] => 30
)
[late_fine] => Array
(
[name] => late fine
[price] => 90
)
)
的旧行为。
如果您这样做,则最高为dplyr 0.5.0:
count()
结果仍将按mtcars %>%
count(cyl, wt)
列分组。举例来说,这意味着如果您跟随cyl
之类的内容,则可能会希望整体上排成一行,而每个summarize(mean(am))
都会得到一行。如果将cyl
放在计数之后,该问题将得到解决。
This behavior was changed in dplyr 0.7.0(于2017年6月发布),这样%>% ungroup()
保留了其输入的分组(意味着count()
现在将返回未分组的表)。这可能是为什么您不再能够重现问题的原因,并且这意味着您不再需要在mtcars %>% count(wt, cyl)
之后执行ungroup()
。
请注意,您可能仍需要在count()
和ungroup()
之后执行group_by()
:
summarize()
返回仍按mtcars %>%
group_by(cyl, wt) %>%
summarize(n = n())
分组的小标题:
cyl