0
我正在嘗試在stata中創建一個循環,該循環將有一個變量,而不是數字或本地宏作爲上限。循環變量作爲Stata的上限
例如,如果num_tests是上限,我想循環:
forval i = 1/num_tests{
//Do things here
}
我試圖做到這一點使用本地宏:
local j = num_tests
forval i = 1/`j'{
//Do stuff
}
然而,這只是工作的第一個觀察,並沒有繼續迭代其他。基本上,我希望for循環按照num_tests變量的指定迭代一定次數。我知道我可以在循環中使用_N來完成此操作,並以這種方式訪問這些值,但從我聽說的這種方法效率極低並且不推薦。
更新:這是一些示例代碼,如果這有幫助。 num_tests是數據集中的一個變量,其值保持在1到6之間,取決於觀察值。所以如果num_tests對於一個給定的觀察結果是三個,我會希望循環執行三次。
//Find results of only the first lab tests
forval i = 1/num_tests{
replace val = `i' if `i' > val
//Set tTG IgA results
replace ttg_iga_result = real(test_result_`i')/real(high_ref_range_`i') if performed_test_cd_`i' == "5003030" | performed_test_cd_`i' == "9503207"
//Set tTG IgG results
replace ttg_igg_result = real(test_result_`i')/real(high_ref_range_`i') if performed_test_cd_`i' == "5003025" | performed_test_cd_`i' == "9503200"
//Set regular IgA results - if variable is > 1, then the patient has low IgA levels
replace iga_result = real(test_result_`i') if performed_test_cd_`i' == "1002860"
}
任何幫助將不勝感激。
感謝您的時間, 內特
在我看來,這是一個會從廣泛的重塑你的數據方面的問題長。 – 2015-07-10 19:43:29