首页 > 解决方案 > group_by dplyr 没有分组

问题描述

好的,所以我在这里阅读了很多帖子,我有点尴尬,因为我以为我理解了基本dplyr功能。

我无法group_by组队,我很困惑。

我有数据框test。我想要的只是按变量分组ID,然后计算每组两个变量之间的相关性。

我不知道发生了什么,因为当我应该有 127 个组和 127 个相关性时,它没有分组并且只输出 1 个相关性。为什么?

test看起来像什么:

在此处输入图像描述

我写的:

library(dplyr)
library(magrittr)
test%>%
  mutate(ID=as.character(ID))%>%
  group_by(ID)%$%
  cor(sulfate,nitrate,use="complete.obs")

我得到了什么:[1] 0.0568084

标签: rdplyr

解决方案


我不认为博览会管道%$%会免费提供dplyr语义group_by。我没有查看源代码,只是想了一下,您的代码会返回什么?具有 127 个相关值的向量?您甚至无法知道哪个来自哪个 ID。我建议您尽可能在内部包装操作mutatesummarise我认为这是预期的用途。请注意,这提供了相同的优点,%$%即避免必须指定数据帧上下文(即可以只写mpg而不是mtcars$mpg)。我不会do在这里使用,因为没有必要(你的输出将是向量,而不是像模型这样更奇特的东西)。

使用下面的内置mtcars数据集的示例。

如果您需要相关向量,则在此操作后很容易提取。

library(dplyr)

mtcars %>%
  group_by(gear) %>% 
  summarise(cor = cor(mpg, hp))
#> # A tibble: 3 x 2
#>    gear    cor
#>   <dbl>  <dbl>
#> 1     3 -0.739
#> 2     4 -0.879
#> 3     5 -0.900

reprex 包(v0.2.0)于 2018 年 7 月 13 日创建。


推荐阅读