Database 如何选择具有不同值的重复ID?
我在看Stata中的一个数据集,它有许多重复的ID值(每个值代表一个人),但ID的每个实例可以有两个值中的一个。比如说,Database 如何选择具有不同值的重复ID?,database,excel,stata,Database,Excel,Stata,我在看Stata中的一个数据集,它有许多重复的ID值(每个值代表一个人),但ID的每个实例可以有两个值中的一个。比如说, PersonID | Place ------------------------ 1 | New York 1 | New York 1 | Berlin 2 | Chicago 2 | Chicago 3 | Berlin 3 | Chicago 我只想选择ID的1和2,因
PersonID | Place
------------------------
1 | New York
1 | New York
1 | Berlin
2 | Chicago
2 | Chicago
3 | Berlin
3 | Chicago
我只想选择ID的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的计数。扩展生成(也称为egen
,以及它的用户编写的附加函数egenmore
)对于以下任务非常方便:
ssc install egenmore
bys PersonID: egen nvals=nvals(Place)
edit if nvals >1
我不确定“仍然将1和2视为单人”是什么意思,但这应该可以让您开始了。扩展生成(也称为egen
,以及它的用户编写的附加函数egenmore
)对于以下任务非常方便:
ssc install egenmore
bys PersonID: egen nvals=nvals(Place)
edit if nvals >1
我不确定“仍然将1和2视为单人”是什么意思,但这应该可以让您开始了。扩展生成(也称为egen
,以及它的用户编写的附加函数egenmore
)对于以下任务非常方便:
ssc install egenmore
bys PersonID: egen nvals=nvals(Place)
edit if nvals >1
我不确定“仍然将1和2视为单人”是什么意思,但这应该可以让您开始了。扩展生成(也称为egen
,以及它的用户编写的附加函数egenmore
)对于以下任务非常方便:
ssc install egenmore
bys PersonID: egen nvals=nvals(Place)
edit if nvals >1
我不知道“仍然将1和2视为单身人士”是什么意思,但这应该让你开始了。这已经作为常见问题解答记录在案:从哪个
bysort id (value) : gen wanted = value[1] == "n" & value[_N] == "y"
是将value
作为字符串变量的解决方案。根据你说的
bysort id (value) : gen wanted = value[1] != value[_N]
这是一个更普遍的解决方案。在这两个示例中,变量wanted
对于wanted id为1,否则为0
缺少值会使问题复杂化 这已被记录为常见问题解答:从哪个
bysort id (value) : gen wanted = value[1] == "n" & value[_N] == "y"
是将value
作为字符串变量的解决方案。根据你说的
bysort id (value) : gen wanted = value[1] != value[_N]
这是一个更普遍的解决方案。在这两个示例中,变量wanted
对于wanted id为1,否则为0
缺少值会使问题复杂化 这已被记录为常见问题解答:从哪个
bysort id (value) : gen wanted = value[1] == "n" & value[_N] == "y"
是将value
作为字符串变量的解决方案。根据你说的
bysort id (value) : gen wanted = value[1] != value[_N]
这是一个更普遍的解决方案。在这两个示例中,变量wanted
对于wanted id为1,否则为0
缺少值会使问题复杂化 这已被记录为常见问题解答:从哪个
bysort id (value) : gen wanted = value[1] == "n" & value[_N] == "y"
是将value
作为字符串变量的解决方案。根据你说的
bysort id (value) : gen wanted = value[1] != value[_N]
这是一个更普遍的解决方案。在这两个示例中,变量wanted
对于wanted id为1,否则为0
缺少值会使问题复杂化 在Excel中使用VBA有很多方法可以做到这一点。我将从一个循环中的一个循环开始,该循环测试是否有任何其他ID具有相同的编号,它们是否具有相同的值,或者构建一个ID列表,并使用自动筛选和测试每个ID的所有值是否相同。您尝试了什么?(我对Stata代码特别感兴趣,但我想其他软件用户也会想知道。)@RobertoFerrer我尝试过通过预订ID:gen duplicate=\n然后使用
count if duplicate==1&response==1&response==0
对ID进行排序,其中1和0分别是y和n。。。几乎所有的组合都是如此。@RobertoFerrer我想我应该确定哪个预订ID有两个答案,然后计算重复的号码,但我不知道如何做。最好编辑您的问题以显示代码。有经验的Stata用户几乎可以阅读它,但对每个人来说,正确显示它会更清晰。在Excel中使用VBA有很多方法可以做到这一点。我将从一个循环中的一个循环开始,该循环测试是否有任何其他ID具有相同的编号,它们是否具有相同的值,或者构建一个ID列表,并使用自动筛选和测试每个ID的所有值是否相同。您尝试了什么?(我对Stata代码特别感兴趣,但我想其他软件用户也会想知道。)@RobertoFerrer我尝试过通过预订ID:gen duplicate=\n然后使用count if duplicate==1&response==1&response==0
对ID进行排序,其中1和0分别是y和n。。。几乎所有的组合都是如此。@RobertoFerrer我想我应该确定哪个预订ID有两个答案,然后计算重复的号码,但我不知道如何做。最好编辑您的问题以显示代码。有经验的Stata用户几乎可以阅读它,但对每个人来说,正确显示它会更清晰。在Excel中使用VBA有很多方法可以做到这一点。我将从一个循环中的一个循环开始,该循环测试是否有任何其他ID具有相同的编号,它们是否具有相同的值,或者构建一个ID列表,并使用自动筛选和测试每个ID的所有值是否相同。您尝试了什么?(我对Stata代码特别感兴趣,但我想其他软件用户也会想知道。)@RobertoFerrer我尝试过通过预订ID:gen duplicate=\n然后使用count if duplicate==1&response==1&response==0
对ID进行排序,其中1和0分别是y和n。。。几乎所有的组合都是如此。@RobertoFerrer我想我应该确定哪个预订ID有两个答案,然后计算重复的号码,但我不知道如何做。最好编辑您的问题以显示代码。有经验的Stata用户几乎可以阅读它,但它会