dplyr:特定行之间的差异
使用此data.frame 数据dplyr:特定行之间的差异,r,dplyr,R,Dplyr,使用此data.frame 数据 df <- read.table(text = c(" id measured simulated Site1 9.10 9.20 Site2 126.00 129.02 Site3 1.00 1.15 Site4 84.50 85.77 Site5 115.60 119.30 Site6 12.10 12.26 Site7 163.10 167.18 Site8
df <- read.table(text = c("
id measured simulated
Site1 9.10 9.20
Site2 126.00 129.02
Site3 1.00 1.15
Site4 84.50 85.77
Site5 115.60 119.30
Site6 12.10 12.26
Site7 163.10 167.18
Site8 74.10 75.51
Site9 19.20 19.74
Site10 74.80 77.12
Site11 287.80 300.46
Site12 13.40 13.76
Site13 283.60 288.70
Site14 475.70 495.68
Site15 741.20 779.74
Site16 2215.10 2398.95 "), header = T)
我将非常感谢您对如何在R中实现这一点的建议。就像@akrun所说的,这里没有真正的模式,所以您可以这样做:
df$measured.diff = with(df, c(measured[1:10],
measured[11:13]-measured[2:4],
measured[14]-sum(measured[c(3,7,12)]),
measured[15]-sum(measured[c(1,8,9,10,13)]),
measured[16]-sum(measured[c(5,6,11,14,15)])))
然后您可以对df$simulated.diff执行相同的操作
或者,由于您多次执行相同的自定义计算,因此创建自己的自定义函数是有意义的
custom_diff = function(vec){
c(vec[1:10],
vec[11:13]-vec[2:4],
vec[14]-sum(vec[c(3,7,12)]),
vec[15]-sum(vec[c(1,8,9,10,13)]),
vec[16]-sum(vec[c(5,6,11,14,15)]))
}
df$measured.diff = custom_diff(df$measured)
df$simulated.diff = custom_diff(df$simulated)
这似乎是一个自定义的计算,而不是任何模式非常感谢您的时间和帮助。
custom_diff = function(vec){
c(vec[1:10],
vec[11:13]-vec[2:4],
vec[14]-sum(vec[c(3,7,12)]),
vec[15]-sum(vec[c(1,8,9,10,13)]),
vec[16]-sum(vec[c(5,6,11,14,15)]))
}
df$measured.diff = custom_diff(df$measured)
df$simulated.diff = custom_diff(df$simulated)