按变量拆分data.frame并使用函数引用具体行

Pep*_*acz 3 r plyr dataframe data.table

我需要data.frame通过一些变量进行拆分,并计算每一行的值与来自其他指定行的值之间的差异.

在下面的例子中,我分手dfv1.然后为每一行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
Run Code Online (Sandbox Code Playgroud)

我更喜欢plyr或者data.table,如果可能的话.

lmo*_*lmo 5

这是一个数据表解决方案:

library(data.table)
setDT(df)
df[, new := v3 - v3[v2=="C"], by = "v1"]
Run Code Online (Sandbox Code Playgroud)