首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历每个值

循环遍历每个值
EN

Stack Overflow用户
提问于 2015-09-04 04:47:18
回答 1查看 390关注 0票数 0

我试图通过一个变量运行一个循环,不确定如何编码我的想法。因此,我有一个名为newid的变量,如下所示

代码语言:javascript
复制
newid
1
1
2
2
3
3

诸若此类。

代码语言:javascript
复制
foreach x in newid2 {
    replace switchers = 1 if doc[_n] != doc[_n+1]
}

我想修改这段代码,以便这段代码可以针对每两个值运行(在本例中,分别针对1和1、2和2运行)。修改它的最好方法是什么?请帮帮我

EN

回答 1

Stack Overflow用户

发布于 2015-09-04 05:04:55

这样的事情可以用levelsof来完成

代码语言:javascript
复制
clear
input id str1 doc
1 "A"
1 "B"
2 "A"
3 "C"
3 "A"
end

gen switcher1 = 0

levelsof id

foreach i in `r(levels)' {
    quietly tab doc if id==`i'
    replace switcher1 = 1 if r(r)>1 & id==`i'
}

然而,你肯定有more efficient ways来实现你的目标。下面是一个标记切换医生的ids的示例:

代码语言:javascript
复制
ssc install egenmore
bysort id: egen num_docs = nvals(doc)
generate switcher2 = cond(num_docs>1,1,0)

潜在的想法是相同的。计算每个id的doc的不同值的个数。如果该数字超过1,则将该id标记为switcher。第二个版本可以说更有效,因为它不需要遍历id值的每个值。

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

https://stackoverflow.com/questions/32385147

复制
相关文章

相似问题

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