如何select具有不同值的重复ID?

我正在查看Stata中有许多重复的ID值(每个代表一个人)的数据集,但ID的每个实例可以有两个值中的一个。 例如,

PersonID | Place ------------------------ 1 | New York 1 | New York 1 | Berlin 2 | Chicago 2 | Chicago 3 | Berlin 3 | Chicago 

我只想selectID的1和2,因为它们有混合的值而忽略 ID 3,但仍然把1和2看作是单独的人。

我将不胜感激提示如何在Stata或Excel中做到这一点。 我没有访问SQL。

编辑

我改变了我的原始伪图,以更好地反映我的数据。

这是我已经试过的代码:

 sort PersonID Place by PersonID(Place), sort: gen mix=Place[1] != Place[_n] count PersonID Place if mix 

这不起作用。 它在第2行后给了我下面的错误:

 factor variables and time-series operators not allowed 

更清楚的是,我想要的是PersonID的数量有不同的地方值。

这已被logging为FAQ: http : //www.stata.com/support/faqs/data-management/listing-observations-in-group/ ,从中

 bysort id (value) : gen wanted = value[1] == "n" & value[_N] == "y" 

是一个stringvariables的解决scheme。 从你说什么

 bysort id (value) : gen wanted = value[1] != value[_N] 

是一个更一般的解决scheme。 在这两个例子中, wanted的variables都是1,而不是0。

缺less值会使这个复杂化。

扩展生成(又名egen ,以及用户编写的附加函数egenmore )非常方便执行如下任务:

 ssc install egenmore bys PersonID: egen nvals=nvals(Place) edit if nvals >1 

我不确定什么“仍然把1和2视为单身人士”的意思,但这应该让你开始。