【发布时间】:2017-05-06 07:46:02
【问题描述】:
我正在尝试在我的数据集中创建一个新变量来存储一个数字,该数字是从同一观察中对另一个数字的计算得出的。
* Here is what my dataset looks like:
SubjectID Score MyNewScore
1001 5442822 0
1002 6406134 0
1003 16 0
现在,变量 Score 是最多 23 个不同数字的总和(我将它们称为“响应”),范围从 1 到 8,388,608。
/* Example of response values
1st response = 1
2nd response = 2
3rd response = 4
4th response = 8
5th response = 16
6th response = 32
...
23rd response = 8,388,608
*/
MyNewScore 包含这些不同响应的计数,这些响应用于获取Score 中的值。在我的示例数据集中,MyNewScore 应该等于 9,因为有 9 个响应用于达到 5,442,822 的总和。
我在Stata中的while循环中嵌套了一个forvalues循环,该循环成功计算了MyNewScore,但我不知道如何用我的嵌套循环的结果替换数据集中当前存在的0。
用于计算我所追求的值的Stata代码:
// Build a loop to create a Roland Morris Score
local score = 16
local count = 0
while `score' != 0 {
local ItemCode
forvalues i=1/24
local j = 2^(`i' - 1)
if `j' >= `score' continue, break
local ItemCode `j'
* display "`ItemCode'"
}
local score = `score' - `ItemCode'
if `score' > 1 {
local count = `count' + 1
display "`count'"
}
else if `score' == 1 {
local count = `count' + 1
display "`count'"
continue, break
}
}
我如何 replace MyNewScore 中的 0 与嵌套循环的输出?我尝试使用“替换”命令将这两个循环嵌套在另一个while 循环中,尽管这只是将第一次观察的计数应用于数据集中的所有观察。
【问题讨论】:
标签: stata