我有两个数据框:(这些是它们的简化版本)
一个
Link VU U P
1 DVH1 7 1 37
2 DVH2 7 0 38
3 DVH3 10 1 35
乙
Link VU U P
1 DVH1 2 0 15
2 DVH2 4 0 14
3 DVH3 0 0 5
我想根据它们的位置从数据帧B中的值中减去数据帧B中的值。因此,例如:
对于DVH1,VU为7-2(或5),结果数据帧如下所示:
Link VU U P
1 DVH1 5 1 22
2 DVH2 3 0 24
3 DVH3 10 1 30
最佳答案
用这个:
within(merge(A,B,by="Link"), {
VU <- VU.x - VU.y
U <- U.x - U.y
P <- P.x - P.y
})[,c("Link","VU","U","P")]
编辑:奖金:如果有太多的成对的列(不仅是VU,U和P),您可以使用以下方法:
M <- merge(A,B,by="Link")
S <- M[,grepl("*\\.x$",names(M))] - M[,grepl("*\\.y$",names(M))]
cbind(M[,1,drop=FALSE],S)
# Link VU.x U.x P.x
#1 DVH1 5 1 22
#2 DVH2 3 0 24
#3 DVH3 10 1 30
关于r - 从一个数据框中减去另一个数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18708395/