Я не думаю, что этот вопрос еще задавался (большинство подобных вопросов касаются извлечения данных или возврата счета). Я новичок в R, поэтому любая помощь будет оценена!
У меня есть набор данных нескольких прогонов эксперимента в одном файле, и данные выглядят так, где у меня есть все временные шаги для каждого прогона в строках
time [info] id (уникальный для каждого прогона)
Я пытаюсь рассчитать, когда система достигнет равновесия, которое я определяю как стабильные значения по 3 взаимозависимым параметрам. Я хотел бы сравнить содержимое строк и, если они находятся в пределах 5% друг от друга в течение 20 временных шагов, вернуть временной шаг, с которого начинается стабильность, и идентификатор.
Пока, я думаю, что это будет что-то вроде следующего (или, возможно, будет цикл while) (извините за плохое форматирование):
y=1;
z=0; #variables to control the loop
x=0;
for (ID) {
if (CC at time=x == 0.05+-CC at time=y ) {
if(z<=20){ #catalogs the number of periods that match
y++
z++}
else [save value in column]
}
else{ #no match for sustained period so start over again
x++
y=x+1
z=0
}
}
eta: CC - один из моих интересных параметров, он колеблется от 0 до 1, хотя конечные точки маловероятны.
Вот простой пример, который может помочь: это примерно так, как выглядят мои данные:
zz <- textConnection("time CC ID
1 0.99 1
2 0.80 1
3 0.90 1
4 0.91 1
5 0.92 1
6 0.91 1
1 0.99 2
2 0.90 2
3 0.90 2
4 0.91 2
5 0.92 2
6 0.91 2")
Data <- read.table(zz, header = TRUE)
close(zz)
У меня вопрос: как я могу пройти по строкам, чтобы узнать, когда значение CC становится «стабильным» (то есть оно не изменяется более чем на 0,05 за X (здесь, 3) временных шагов), чтобы оно создаст следующие результаты:
ID timeToEQ
1 1 3
2 2 2
это помогает? Единственный способ сделать это - использовать цикл for, и я думаю, что должен быть более простым способом!