如何查看组内的所有值是否唯一/识别那些不是

时间:2015-04-17 14:51:05

标签: unique stata

说我有这样的数据:

group value
1     fox
1     fox
1     fox
2     dog
2     cat
3     frog
3     frog
4     dog
4     dog

我希望能够判断valuegroup的所有值是否相同。另一种看待这种情况的方法是,我是否可以创建一个新变量,其中包含组内value的所有唯一值,如下所示:

group value all_values
1     fox    fox
1     fox    fox
1     fox    fox
2     dog    dog cat
2     cat    dog cat
3     frog   frog
3     frog   frog
4     dog    dog
4     dog    dog

如我们所见,除2组以外的所有群组只有value的一个不同条目。

我认为可以做类似事情(但不是那么好)的一种方法是执行以下操作:

bys group: egen tag = tag(value)
bys group: egen sum = sum(tag)

然后根据sum的值,我可以确定是否有多个条目。

但是,egen标记不适用于bysort。有没有其他有效的方法来获取我需要的信息?

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。一个是:

clear
set more off

input ///
group str5 value
1     fox
1     fox
1     fox
2     dog
2     cat
3     frog
3     frog
4     dog
4     dog
end

*-----

bysort group (value) : gen onevalue = value[1] == value[_N]

list, sepby(group)

假设你有错过,但想忽略它们(不是drop它们);然后以下工作:

clear
set more off

input ///
group str5 value
1     fox
1     fox
1     fox
2     dog
2     cat
3     frog
3     frog
4     dog
4     dog
5     ox
5     ox
5     
6     cow
6     goat
6      
end

*-----

encode value, gen(value2)

bysort group (value2) : replace value2 = value2[_n-1] if missing(value2)
by group: gen onevalue = value2[1] == value2[_N]

list, sepby(group)

另请参阅此FAQ,其技术类似于您原来的策略。