我有一段Stata代码,我正试图将它转换成python。
if inlist(nid, 4580, 4250, 165101, 4679, 236205, 419098, 438439, 11240, 317089, 430032, 3716, 164729) {
capture confirm variable child_age_year
if !_rc {
replace child_age_year = 0
}
else {
gen child_age_year = 0
}
}
它应该为没有age_year的调查创建一个child_demographics变量。
我现在得到的是前两行的翻译如下:
if sum((df['nid'] == i).any() for i in [4580, 4250, 165101, 4679, 236205, 419098, 438439, 11240, 317089, 430032, 3716, 164729]) == 12:
我应该如何完成这个语句,以便它复制原始Stata代码?
发布于 2022-11-29 19:24:04
在Stata中,代码没有多大意义。
但没有意义的是
if inlist(nid, 4580, 4250, 165101, 4679, 236205, 419098, 438439, 11240, 317089, 430032, 3716, 164729)
可以在Stata中只应用于数据集中的第一个观察(案例、记录、行)。
换句话说。这意味着在实践中
if inlist(nid[1], 4580, 4250, 165101, 4679, 236205, 419098, 438439, 11240, 317089, 430032, 3716, 164729)
作为附加到代码其余部分的条件。
代码的其余部分是:如果存在这样的变量,那么在每个观察中用0覆盖它的值;否则,在每个观察中用0创建它。
也许更有可能的是,最初的程序员混淆了if
命令(在这里使用)和if
限定符。
我会在这段代码上加上一个在1附近的先验概率,只要它不值得翻译,除非它被检查过。
https://stackoverflow.com/questions/74618708
复制相似问题