如何查看组中的所有值是否都是 unique/identify 那些不是
How to see if all values within group are unique/identify those that aren't
假设我有这样的数据:
group value
1 fox
1 fox
1 fox
2 dog
2 cat
3 frog
3 frog
4 dog
4 dog
我想知道 value
的所有值在 group
中是否相同。另一种查看方式是,如果我可以创建一个新变量,其中包含组内 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
。有没有其他有效的方法来获取我需要的信息?
有几种方法可以做到这一点。一个是:
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,它的技术与您的原始策略相似。
假设我有这样的数据:
group value
1 fox
1 fox
1 fox
2 dog
2 cat
3 frog
3 frog
4 dog
4 dog
我想知道 value
的所有值在 group
中是否相同。另一种查看方式是,如果我可以创建一个新变量,其中包含组内 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
。有没有其他有效的方法来获取我需要的信息?
有几种方法可以做到这一点。一个是:
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,它的技术与您的原始策略相似。