【发布时间】:2016-04-15 11:33:30
【问题描述】:
我需要将data.frame 拆分为某个变量,并计算每行的值与其他指定行的值之间的差异。
在下面的示例中,我将df 拆分为v1。然后为v3 的每一行计算实际值与v3[v2 == "C"] 之间的差异。
v1 <- rep(1:4,each = 3)
v2 <- rep(c("A","B","C"),4)
v3 <- rep(1:5,3)[1:12]
res <- c(-2,-1,0,3,4,0,-2,-1,0,3,-1,0)
df <- data.frame(v1,v2,v3,res)
df
v1 v2 v3 res
1 1 A 1 -2
2 1 B 2 -1
3 1 C 3 0
4 2 A 4 3
5 2 B 5 4
6 2 C 1 0
7 3 A 2 -2
8 3 B 3 -1
9 3 C 4 0
10 4 A 5 3
11 4 B 1 -1
12 4 C 2 0
如果可能的话,我更喜欢plyr 或data.table。
【问题讨论】:
-
dplyr替代:df %>% group_by(v1) %>% mutate(res = v3 - v3[v2=='C'])
标签: r dataframe data.table plyr