Man*_*uel 6 statistics r difference dplyr
我正在使用dplyr,我想知道是否有可能在一行中计算组之间的差异.如下面的小例子所示,任务是计算A组和B组标准化"分"变量之间的差异.
library(dplyr)
# creating a small data.frame
GROUP <- rep(c("A","B"),each=10)
NUMBE <- rnorm(20,50,10)
datf <- data.frame(GROUP,NUMBE)
datf2 <- datf %.% group_by(GROUP) %.% mutate(cent = (NUMBE - mean(NUMBE))/sd(NUMBE))
gA <- datf2 %.% ungroup() %.% filter(GROUP == "A") %.% select(cent)
gB <- datf2 %.% ungroup() %.% filter(GROUP == "B") %.% select(cent)
gA - gB
Run Code Online (Sandbox Code Playgroud)
这当然是通过创建不同的对象没有问题 - 但是有更多的"内置"方式来执行此任务吗?更像是下面没有工作幻想代码的东西?
datf2 %.% summarize(filter(GROUP == "A",select(cent)) - filter(GROUP == "B",select(cent)))
Run Code Online (Sandbox Code Playgroud)
谢谢!
鉴于我们每组有10个,添加一个索引1:10,1:10,并总结一下,区别于:
> datf2$entry=c(1:10,1:10)
> datf2 %.% ungroup() %.% group_by(entry) %.% summarize(d=cent[1]-cent[2])
Source: local data frame [10 x 2]
entry d
1 1 -0.8272879
2 2 -0.9159827
3 3 -0.5064762
4 4 0.4211639
5 5 1.3681720
6 6 3.3430289
7 7 1.0086822
8 8 -0.6163907
9 9 -0.7325220
10 10 -2.5423875
Run Code Online (Sandbox Code Playgroud)
相比:
> gA - gB
cent
1 -0.8272879
2 -0.9159827
3 -0.5064762
4 0.4211639
5 1.3681720
6 3.3430289
7 1.0086822
8 -0.6163907
9 -0.7325220
10 -2.5423875
Run Code Online (Sandbox Code Playgroud)
有没有办法将entry字段注入数据或dplyr调用?我不确定,它似乎依赖于对数据了解太多的函数......
| 归档时间: |
|
| 查看次数: |
4288 次 |
| 最近记录: |