代码之家  ›  专栏  ›  技术社区  ›  delcast

按dplyr分组的组没有分组

  •  1
  • delcast  · 技术社区  · 7 年前

    好吧,我在这里读了很多帖子,我有点不好意思,因为我觉得我理解了 dplyr 功能。

    我找不到 group_by 我很困惑。

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

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

    什么 测试 看起来像:

    enter image description here

    我写的:

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

    我得到的是: [1] 0.0568084 .

    1 回复  |  直到 7 年前
        1
  •  8
  •   Calum You    7 年前

    我不认为展览管 %$% 将免费提供 dplyr 语义 group_by 是的。我没有看源代码,只是在想,你的代码会返回什么?一个有127个相关值的向量?你甚至都不知道哪一个来自哪个ID。我建议你坚持在内部包装操作 mutate summarise 如果可能的话,我认为这是预期用途。注意,这提供了 %$% 这就避免了必须指定数据帧上下文(也就是说,可以只写 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
    

    于2018年7月13日由 reprex package (第0.2.0版)。