Stata应用组1';如果组1相同,则将信息发送给其他组
如果我有Stata应用组1';如果组1相同,则将信息发送给其他组,stata,Stata,如果我有 group1 group2 info 100 1 . 100 1 . 200 1 10 200 2 20 300 2 . 然后,对于group1,如果group2相同,则将group1的“信息”复制到其他group1 所以结果是这样的 group1 group2 info 100 1 10 100 1 10 200
group1 group2 info
100 1 .
100 1 .
200 1 10
200 2 20
300 2 .
然后,对于group1,如果group2相同,则将group1的“信息”复制到其他group1
所以结果是这样的
group1 group2 info
100 1 10
100 1 10
200 1 10
200 2 20
300 2 20
我试着用bysort做这件事,但想不出一个方法来做这件事。这会管用的
bysort group2 (info): replace info = info[1]
在此处找到解决方案:
这个问题令人费解,因为这个例子暗示变量
group1
是不相关的。我将以这个例子而不是措辞作为确定的依据
@timat的解决方案是正确的,但是没有检查一个合理的约束,即组中的非缺失值应该相同
一种方法取决于这样一个事实,即大多数egen
函数尽可能忽略缺失的值。因此,只有当且仅当每组中的最大值和最小值相同(且不缺失)时,才存在一个不同的非缺失值,并且可以复制该值以替换观测组中的缺失值。(如果缺少所有值,则不会出现任何问题。)
clear
input group1 group2 info
100 1 .
100 1 .
200 1 10
200 2 20
300 2 .
end
bysort group2: egen max = max(info)
by group2: egen min = min(info)
replace info = max if max == min & missing(info)
list, sepby(group2)
+------------------------------------+
| group1 group2 info max min |
|------------------------------------|
1. | 100 1 10 10 10 |
2. | 100 1 10 10 10 |
3. | 200 1 10 10 10 |
|------------------------------------|
4. | 200 2 20 20 20 |
5. | 300 2 20 20 20 |
+------------------------------------+