【发布时间】:2021-05-05 02:04:34
【问题描述】:
我是 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)) [From x, N]
- e(x):剩余预期寿命;定义为 T(x) / l(x)
现在我不是在问如何获得所有这些值,我只是需要帮助开始并指出正确的方向。据我所知,在 VFP 中没有办法指向数据表中的特定行,所以我不能做我通常在 R 中做的事情,而只是做一个循环。 IE。我不能这样做:
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 事物顺序更新每个值,但我真的不明白发生了什么或如何微调每个我需要的计算/输入。 (这是我尝试此操作时引用的帖子:Multiply and subtract values in previous row for new row in FoxPro。
那么,如何在 Visual FoxPro 中制作一个依赖迭代过程来计算后续值的表?有没有什么好的资源可以解释我正在尝试的光标和分散/扫描的东西(我找不到任何资源可以用我能理解的方式解释它)?
对不起,如果我措辞不好,我对编程还是很陌生。谢谢。
【问题讨论】:
-
我建议您在提出问题时包含样本数据和所需结果。
-
VFP 当然有办法随时指向特定的行。同样在 VFP 中,可以将整个表视为一个数组,并为不同行的数据使用数组指针。还有 SQL 和 Scan...endscan。您的问题中缺少一些示例数据以及您真正想要的数据。
标签: sql visual-foxpro database-cursor