Pep*_*acz 3 r plyr dataframe data.table
我需要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
Run Code Online (Sandbox Code Playgroud)
我更喜欢plyr或者data.table,如果可能的话.
这是一个数据表解决方案:
library(data.table)
setDT(df)
df[, new := v3 - v3[v2=="C"], by = "v1"]
Run Code Online (Sandbox Code Playgroud)