我正在尝试学习 dplyr
,但是在 Stackoverflow 或文档中,我找不到一个相对简单的问题的答案。所以我决定在这里问一下。
我有一个看起来像这样的数据框:
set.seed(1)
dat<-data.frame(rnorm(10,20,20),rep(seq(5),2),rep(c("a","b"),5))
names(dat)<-c("number","factor_1","factor_2")
dat<-dat[order(dat$factor_1,dat$factor_2),]
dat<-dat[c(-3,-7),]
number factor_1 factor_2
1 7.470924 1 a
6 3.590632 1 b
2 23.672866 2 b
3 3.287428 3 a
8 34.766494 3 b
4 51.905616 4 b
5 26.590155 5 a
10 13.892232 5 b
我想使用
dplyr
来减去每个因素一级别中与 factor_2=="b"
相关联的 number
列的值,从 factor_2=="a"
中减去。结果数据框的第一行应如下所示:
diff factor_1
1 3.880291 1
需要注意的是,在每个factor_1
级别中,并不总是存在每个factor_2
级别的值。如果是这种情况,我希望将与缺失因子级别相关联的number
赋值为0
。
感谢您的帮助。
plyr
来解决这个问题,但是dplyr
和plyr
的交互导致一开始你的解决方案无法正常工作(不知道为什么?)。 - bjoseph