Stata-生成忽略顺序的唯一组合
我试图创建一个数据集,该数据集按ID列出所有行的组合,但忽略组合顺序(即Apple->Orange与Orange->Apple相同)。我开始使用问句,它让我得到所有的组合,保持不同的顺序。如何修改此代码以获得所需的输出?或者我应该使用一种完全不同的方法,这种方法是什么 我当前使用链接问题所做工作的代码:Stata-生成忽略顺序的唯一组合,stata,Stata,我试图创建一个数据集,该数据集按ID列出所有行的组合,但忽略组合顺序(即Apple->Orange与Orange->Apple相同)。我开始使用问句,它让我得到所有的组合,保持不同的顺序。如何修改此代码以获得所需的输出?或者我应该使用一种完全不同的方法,这种方法是什么 我当前使用链接问题所做工作的代码: clear all input id str10 fruit 1 "Apple" 1 "Banana" 1 "Orange" 2
clear all
input id str10 fruit
1 "Apple"
1 "Banana"
1 "Orange"
2 "Orange"
2 "Apple"
3 "Pear"
3 "Kiwi"
3 "Apple"
3 "Lemon"
end
tempfile t1
save `t1'
clear
use `t1'
rename fruit f2
keep id f2
joinby id using `t1'
order id fruit f2
sort id fruit f2
drop if fruit==f2
list, sepby(id)
我期望的输出是:
ID fruit f2
1 Apple Banana
1 Apple Orange
1 Banana Orange
2 Orange Apple
3 Pear Kiwi
3 Pear Apple
3 Pear Lemon
3 Kiwi Apple
3 Kiwi Lemon
3 Apple Lemon
在
joinby
之后,您可以生成一个辅助变量,将fruit和f2放在一个变量中并对它们进行排序,确保相同的组合具有相同的值。然后,您可以根据此变量和id使用duplicates drop
,来删除重复项
clear
input id str10 fruit
1 "Apple"
1 "Banana"
1 "Orange"
2 "Orange"
2 "Apple"
3 "Pear"
3 "Kiwi"
3 "Apple"
3 "Lemon"
end
tempfile t1
save `t1'
rename fruit f2
joinby id using `t1'
order id fruit f2
sort id fruit f2
drop if fruit==f2
gen combination = cond(fruit < f2, fruit + " " + f2, f2 + " " + fruit)
duplicates drop id combination, force
drop combination
list, sepby(id)
+----------------------+
| id fruit f2 |
|----------------------|
1. | 1 Apple Banana |
2. | 1 Apple Orange |
3. | 1 Banana Orange |
|----------------------|
4. | 2 Apple Orange |
|----------------------|
5. | 3 Apple Kiwi |
6. | 3 Apple Lemon |
7. | 3 Apple Pear |
8. | 3 Kiwi Lemon |
9. | 3 Kiwi Pear |
10. | 3 Lemon Pear |
+----------------------+
清除
输入id str10
1“苹果”
1“香蕉”
1“橙色”
2“橙色”
2“苹果”
3“梨”
3“猕猴桃”
3“苹果”
3“柠檬”
结束
临时文件t1
保存't1'
将水果命名为f2
使用't1'的joinby id
订单号水果f2
排序id果f2
如果水果=f2,则下降
发电机组合=秒(水果