Я хочу создать новый фрейм данных (b), рассчитав наклон нескольких интервалов во времени. Ниже приведено подмножество исходных данных (а) и код для генерации желаемого кадра данных (б). Я хочу определить наклон $ O2_229 и $ O2_Blank с интервалами $ RunTime 0.393-0.443, 0.000-0.042 и 0.042-0.093 соответственно.
Вот код, который я сейчас использую:
a <- structure(list(RunTime = c(0, 0.042, 0.093, 0.143, 0.193, 0.243,
0.293, 0.343, 0.393, 0.443, 0.493, 0.543, 0.593, 0.643, 0.693,
0.743, 0.793, 0.842, 0.893, 0.943), O2_229 = c(223.479, 222.774,
222.185, 221.557, 221.335, 220.879, 220.734, 220.396, 220.295,
219.996, 219.859, 219.407, 219.33, 218.899, 218.725, 218.495,
218.449, 217.833, 217.805, 217.856), O2_35 = c(189.719, 189.479,
189.063, 188.843, 188.498, 188.237, 188.262, 187.959, 187.856,
187.786, 187.512, 187.086, 186.957, 186.874, 186.589, 186.559,
186.312, 186.267, 186.039, 185.947), O2_230 = c(189.894, 189.326,
188.835, 188.786, 188.296, 188.064, 187.634, 187.417, 187.001,
187.024, 186.684, 186.488, 186.162, 185.956, 185.931, 185.701,
185.604, 185.491, 185.22, 185.384), O2_36 = c(191.005, 190.59,
190.155, 189.836, 189.505, 189.103, 188.751, 188.343, 188.183,
187.785, 187.563, 187.442, 186.949, 186.684, 186.486, 186.215,
185.942, 185.858, 185.689, 185.567), O2_Blank = c(193.543, 193.315,
192.927, 192.846, 192.373, 191.749, 191.284, 190.876, 190.44,
190.196, 189.89, 189.381, 189.131, 188.841, 188.647, 188.631,
188.315, 188.358, 188.062, 188.221)), row.names = c(NA, 20L), class
= "data.frame")
b <- data.frame("Light" = c("0%", "10%", "20%"),
"229" = c((a$O2_229[a$RunTime == "0.443"] -
a$O2_229[a$RunTime == "0.393"])/(0.443 - 0.393),
(a$O2_229[a$RunTime == "0.042"] -
a$O2_229[a$RunTime == "0"])/(0.042 - 0),
(a$O2_229[a$RunTime == "0.093"] -
a$O2_229[a$RunTime == "0.042"])/(0.093 - 0.042)),
"Blank" = c((a$O2_Blank[a$RunTime == "0.443"] -
a$O2_Blank[a$RunTime == "0.393"])/(102.643 - 92.043),
(a$O2_Blank[a$RunTime == "0.042"] -
a$O2_Blank[a$RunTime == "0"])/(0.042 - 0),
(a$O2_Blank[a$RunTime == "0.093"] -
a$O2_Blank[a$RunTime == "0.042"])/(0.093 - 0.042)))
Желаемый вывод - это кадр данных, который выглядит следующим образом:
Light 229 Blank
0% -0.02820755 -0.02301887
10% -16.78571429 -5.42857143
20% -11.54901961 -7.60784314