好的,所以我在这里阅读了很多帖子,我有点尴尬因为我认为我理解了基本的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")
Run Code Online (Sandbox Code Playgroud)
我得到了什么:[1] 0.0568084.
我不认为博览会管道%$%会自由地提供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
Run Code Online (Sandbox Code Playgroud)
由reprex包创建于2018-07-13 (v0.2.0).