如何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视为单身人士”的意思,但这应该让你开始。