通过 R 中的多个标准查找价值的增加

问题描述 投票:0回答:1

这可能是很长的路要走,但我不知道如何缩短它。在下面的数据框中 (df3),我有 2 个站点,其深度范围从 0.1 到 15.1,间隔为 0.1。密度从表面到深海发生变化,但我需要找到每个地点深度 10m 后密度增加 0.03 的位置。有没有办法通过站点找到该深度?

 depth <- seq(from = 0.1, to =15.1, by = 0.1)

 density <- c(NA,   NA, NA, NA, NA, 1027.073188,    1027.073543,    1027.073898, 1027.074253,   1027.074607,    1027.074962,    1027.075317,    1027.075672,    1027.076026, 1027.076381, 1027.076736, 1027.077118, 1027.077501,    1027.077884,    1027.078267,    1027.078649,    1027.079032,    1027.079415,    1027.079797,    1027.08018, 1027.080563,    1027.081026,    1027.081489,    1027.081952,    1027.082415,    1027.082878,    1027.08334, 1027.083803,    1027.084266,    1027.084729,    1027.085192,    1027.085663,    1027.086134,    1027.086605,    1027.087076,    1027.087547,    1027.088018,    1027.088489,    1027.08896, 1027.089431,    1027.089909,    1027.090387,    1027.090865,    1027.091344,    1027.091822,    1027.0923,  1027.092778,    1027.093256,    1027.093735,    1027.094213,    1027.094691,    1027.095162,    1027.095633,    1027.096104,    1027.096575,    1027.097046,    1027.097517,    1027.097987,    1027.098458,    1027.098929,    1027.0994,  1027.099871,    1027.100342,    1027.100813,    1027.101284,    1027.101755,    1027.102226,    1027.102697,    1027.103167,    1027.103638,    1027.104109,    1027.104556,    1027.105003,    1027.10545, 1027.105897,    1027.106344,    1027.106791,    1027.107237,    1027.107684,    1027.108131,    1027.108578,    1027.109041,    1027.109504,    1027.109967,    1027.110429,    1027.110892,    1027.111355,    1027.111818,    1027.112281,    1027.112744,    1027.113207,    1027.113683,    1027.114159,    1027.114635,    1027.115112,    1027.115588,    1027.116065,    1027.116542,    1027.117019,    1027.117497,    1027.117974,    1027.118451,    1027.118928,    1027.119406,    1027.119883,    1027.12036, 1027.120836,    1027.121312,    1027.121788,    1027.122264,    1027.12274, 1027.123216,    1027.123692,    1027.124167,    1027.124643,    1027.125119,    1027.125595,    1027.126071,    1027.126547,    1027.127023,    1027.127499,    1027.127975,    1027.128451,    1027.128926,    1027.129402,    1027.129878,    1027.130354,    1027.13083, 1027.131305,    1027.131781,    1027.132257,    1027.132732,    1027.133208,    1027.133684,    1027.134159,    1027.134635,    1027.135111,    1027.135587,    1027.136062,    1027.136538,    1027.137014,    1027.137489,    1027.137965,    1027.138441,    1027.138916,    1027.139392)

 df <- as.data.frame(cbind(depth, density))
 df$site <- 1

 df2 <- as.data.frame(cbind(depth, density-0.015))
 df2$site <- 2
 colnames(df2)[2] <- "density"

 df3 <- rbind(df, df2)
r dplyr
1个回答
0
投票

不幸的是,对于每个

site
,行方向的
density
差异不大于
.03
。此外,不存在大于
.03
的行方向累积密度差:

df3 = subset(df3, depth >= 10)
df3$cdd = 
  with(df3, ave(density, site, FUN = \(x) {i = c(NA, diff(x)); i[is.na(i)] = 0L; cumsum(i) >= .03}))

# df3
    depth  density site cdd
100  10.0 1027.115    1   0
101  10.1 1027.116    1   0
102  10.2 1027.116    1   0
103  10.3 1027.117    1   0
104  10.4 1027.117    1   0
105  10.5 1027.117    1   0
106  10.6 1027.118    1   0
107  10.7 1027.118    1   0
108  10.8 1027.119    1   0
109  10.9 1027.119    1   0
110  11.0 1027.120    1   0
111  11.1 1027.120    1   0
112  11.2 1027.121    1   0
113  11.3 1027.121    1   0
114  11.4 1027.122    1   0
115  11.5 1027.122    1   0
116  11.6 1027.123    1   0
117  11.7 1027.123    1   0
118  11.8 1027.124    1   0
119  11.9 1027.124    1   0
120  12.0 1027.125    1   0
121  12.1 1027.125    1   0
122  12.2 1027.126    1   0
123  12.3 1027.126    1   0
124  12.4 1027.127    1   0
125  12.5 1027.127    1   0
126  12.6 1027.127    1   0
127  12.7 1027.128    1   0
128  12.8 1027.128    1   0
129  12.9 1027.129    1   0
130  13.0 1027.129    1   0
131  13.1 1027.130    1   0
132  13.2 1027.130    1   0
133  13.3 1027.131    1   0
134  13.4 1027.131    1   0
135  13.5 1027.132    1   0
136  13.6 1027.132    1   0
137  13.7 1027.133    1   0
138  13.8 1027.133    1   0
139  13.9 1027.134    1   0
140  14.0 1027.134    1   0
141  14.1 1027.135    1   0
142  14.2 1027.135    1   0
143  14.3 1027.136    1   0
144  14.4 1027.136    1   0
145  14.5 1027.137    1   0
146  14.6 1027.137    1   0
147  14.7 1027.137    1   0
148  14.8 1027.138    1   0
149  14.9 1027.138    1   0
150  15.0 1027.139    1   0
151  15.1 1027.139    1   0
251  10.0 1027.100    2   0
252  10.1 1027.101    2   0
253  10.2 1027.101    2   0
254  10.3 1027.102    2   0
255  10.4 1027.102    2   0
256  10.5 1027.102    2   0
257  10.6 1027.103    2   0
258  10.7 1027.103    2   0
259  10.8 1027.104    2   0
260  10.9 1027.104    2   0
261  11.0 1027.105    2   0
262  11.1 1027.105    2   0
263  11.2 1027.106    2   0
264  11.3 1027.106    2   0
265  11.4 1027.107    2   0
266  11.5 1027.107    2   0
267  11.6 1027.108    2   0
268  11.7 1027.108    2   0
269  11.8 1027.109    2   0
270  11.9 1027.109    2   0
271  12.0 1027.110    2   0
272  12.1 1027.110    2   0
273  12.2 1027.111    2   0
274  12.3 1027.111    2   0
275  12.4 1027.112    2   0
276  12.5 1027.112    2   0
277  12.6 1027.112    2   0
278  12.7 1027.113    2   0
279  12.8 1027.113    2   0
280  12.9 1027.114    2   0
281  13.0 1027.114    2   0
282  13.1 1027.115    2   0
283  13.2 1027.115    2   0
284  13.3 1027.116    2   0
285  13.4 1027.116    2   0
286  13.5 1027.117    2   0
287  13.6 1027.117    2   0
288  13.7 1027.118    2   0
289  13.8 1027.118    2   0
290  13.9 1027.119    2   0
291  14.0 1027.119    2   0
292  14.1 1027.120    2   0
293  14.2 1027.120    2   0
294  14.3 1027.121    2   0
295  14.4 1027.121    2   0
296  14.5 1027.122    2   0
297  14.6 1027.122    2   0
298  14.7 1027.122    2   0
299  14.8 1027.123    2   0
300  14.9 1027.123    2   0
301  15.0 1027.124    2   0
302  15.1 1027.124    2   0

我理解正确吗?您是否正在寻找与 10 深度值的比较?

数据

depth <- seq(from = 0.1, to =15.1, by = 0.1)
density <- c(NA,   NA, NA, NA, NA, 1027.073188,    1027.073543,    1027.073898, 1027.074253,   1027.074607,    1027.074962,    1027.075317,    1027.075672,    1027.076026, 1027.076381, 1027.076736, 1027.077118, 1027.077501,    1027.077884,    1027.078267,    1027.078649,    1027.079032,    1027.079415,    1027.079797,    1027.08018, 1027.080563,    1027.081026,    1027.081489,    1027.081952,    1027.082415,    1027.082878,    1027.08334, 1027.083803,    1027.084266,    1027.084729,    1027.085192,    1027.085663,    1027.086134,    1027.086605,    1027.087076,    1027.087547,    1027.088018,    1027.088489,    1027.08896, 1027.089431,    1027.089909,    1027.090387,    1027.090865,    1027.091344,    1027.091822,    1027.0923,  1027.092778,    1027.093256,    1027.093735,    1027.094213,    1027.094691,    1027.095162,    1027.095633,    1027.096104,    1027.096575,    1027.097046,    1027.097517,    1027.097987,    1027.098458,    1027.098929,    1027.0994,  1027.099871,    1027.100342,    1027.100813,    1027.101284,    1027.101755,    1027.102226,    1027.102697,    1027.103167,    1027.103638,    1027.104109,    1027.104556,    1027.105003,    1027.10545, 1027.105897,    1027.106344,    1027.106791,    1027.107237,    1027.107684,    1027.108131,    1027.108578,    1027.109041,    1027.109504,    1027.109967,    1027.110429,    1027.110892,    1027.111355,    1027.111818,    1027.112281,    1027.112744,    1027.113207,    1027.113683,    1027.114159,    1027.114635,    1027.115112,    1027.115588,    1027.116065,    1027.116542,    1027.117019,    1027.117497,    1027.117974,    1027.118451,    1027.118928,    1027.119406,    1027.119883,    1027.12036, 1027.120836,    1027.121312,    1027.121788,    1027.122264,    1027.12274, 1027.123216,    1027.123692,    1027.124167,    1027.124643,    1027.125119,    1027.125595,    1027.126071,    1027.126547,    1027.127023,    1027.127499,    1027.127975,    1027.128451,    1027.128926,    1027.129402,    1027.129878,    1027.130354,    1027.13083, 1027.131305,    1027.131781,    1027.132257,    1027.132732,    1027.133208,    1027.133684,    1027.134159,    1027.134635,    1027.135111,    1027.135587,    1027.136062,    1027.136538,    1027.137014,    1027.137489,    1027.137965,    1027.138441,    1027.138916,    1027.139392)

df <- data.frame(depth, density, site = 1)
df2 <- data.frame(depth, density = density - .015, site = 2)
colnames(df2)[2] <- "density"
df3 <- rbind(df, df2)
© www.soinside.com 2019 - 2024. All rights reserved.