Я новичок в Visual FoxPro (9.0), и у меня возникли проблемы с созданием таблицы, которая использует предыдущие значения для создания новых значений. Под этим я подразумеваю, что у меня есть таблица с двумя столбцами: возраст и вероятность смерти. Используя это, мне нужно создать таблицу выживания, в которой есть столбцы Age, l(x), d(x), q(x), m(x), L(x), T(x) и q(x) Где:
- l(x): функция выживания; Определяется как l(x+1) = l(x) * EXP(-m(x))
- d(x): количество смертей; Определяется как l(x) - l(x+1)
- q(x): вероятность смерти; Это мне уже дано
- m(x): уровень смертности; Определяется как -LN(1-q(x))
- L(x): общее количество человеко-лет когорт в интервале (x, x+1); Определяется как l(x+1) + (0,5 * d(x))
- T(X): Общее количество человеко-лет всех когорт в интервале (x, N); Определяется как SUM(L(x)) [от x, N]
- e(x): ожидаемая продолжительность оставшегося срока службы; Определяется как T(x)/l(x)
Теперь я не спрашиваю, как получить все эти значения, мне просто нужна помощь в начале работы и, возможно, указание в правильном направлении. Насколько я могу судить, в VFP нет способа указать на конкретную строку в таблице данных, поэтому я не могу делать то, что обычно делаю в R, и просто зацикливаться. т.е. Я не могу сделать что-то вроде:
for (i in 1:length(given_table$Age))
{
new_table$mort_rate[i] <- -LN(1-given_table$death_prop[i])
}
Прошло немного времени, поэтому я все равно не уверен, что это на 100% правильно, но моя точка зрения заключается в том, что я привык создавать таблицу и изменять значения по отдельности, указывая на определенную строку и/или столбец с помощью цикл с простой переменной-счетчиком. Однако из того, что я читал, кажется, что в VFP нет способа сделать это, и я совершенно потерян.
Я пытался создать курсор, заполняя его фиктивными значениями и пытаясь обновить каждое значение последовательно, используя SCATTER NAME и SCAN/REPLACE, но я действительно не понимаю, что происходит или как точно настроить это для каждого расчета/ввода. что мне нужно. (Это сообщение, на которое я ссылался, когда пробовал это: Умножение и вычитание значений в предыдущей строке для новой строки в FoxPro.
Итак, как мне создать таблицу, основанную на итеративном процессе вычисления последующих значений в Visual FoxPro? Есть ли какие-нибудь хорошие ресурсы, которые объясняют Курсоры и Scatter/Scan, которые я пробовал (я не смог найти никаких ресурсов, которые объясняли бы это понятными мне терминами)?
Извините, если я плохо сформулировал вещи, я довольно новичок в программировании в целом. Спасибо.