首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Stata if else语句翻译为python

将Stata if else语句翻译为python
EN

Stack Overflow用户
提问于 2022-11-29 18:30:27
回答 1查看 58关注 0票数 0

我有一段Stata代码,我正试图将它转换成python。

代码语言:javascript
运行
复制
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变量。

我现在得到的是前两行的翻译如下:

代码语言:javascript
运行
复制
if sum((df['nid'] == i).any() for i in [4580, 4250, 165101, 4679, 236205, 419098, 438439, 11240, 317089, 430032, 3716, 164729]) == 12:

我应该如何完成这个语句,以便它复制原始Stata代码?

EN

回答 1

Stack Overflow用户

发布于 2022-11-29 19:24:04

在Stata中,代码没有多大意义。

但没有意义的是

代码语言:javascript
运行
复制
if inlist(nid, 4580, 4250, 165101, 4679, 236205, 419098, 438439, 11240, 317089, 430032, 3716, 164729) 

可以在Stata中只应用于数据集中的第一个观察(案例、记录、行)。

换句话说。这意味着在实践中

代码语言:javascript
运行
复制
if inlist(nid[1], 4580, 4250, 165101, 4679, 236205, 419098, 438439, 11240, 317089, 430032, 3716, 164729) 

作为附加到代码其余部分的条件。

代码的其余部分是:如果存在这样的变量,那么在每个观察中用0覆盖它的值;否则,在每个观察中用0创建它。

也许更有可能的是,最初的程序员混淆了if命令(在这里使用)和if限定符。

我会在这段代码上加上一个在1附近的先验概率,只要它不值得翻译,除非它被检查过。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74618708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档