我需要帮助才能获得可以获得各种变量组合的Stata代码。我有7个变量,我需要运行一个代码,它可以给我一个所有这些变量的独特组合。每一行都是所有7个变量的唯一组合。
一个例子: V1:A,B,C V2:1,2,3 A1 A2 A3,B1 B2 B3,C1 C2 C3
所有变量的独特组合 - 总共9种组合。
我有15000个观察结果。我在R中得到了一个代码,但R不会得到大数据的输出(内存错误)。我想在Stata中得到这个。
答案 0 :(得分:3)
您想要创建或完成的内容并不是特别清楚。这里没有代码,甚至没有R代码显示你想要的是如何在R中完成的。没有可重复的例子。
您可能想要查看egen, group()
。 (以前对@Dimitriy V. Masterov的回答是这位Stata的经验丰富的用户,两次被错误地删除为垃圾邮件,大概是不知道Stata的人。)
或者,尝试从SSC安装groups
。
更新:答案听起来更像fillin
。对于“独特”读“不同”。
答案 1 :(得分:0)
有点迟到的反应,但我今天偶然发现了这一点。如果我理解这个问题,那么这样的事情应该可以解决问题,虽然我不确定它是否可以很容易地应用于更复杂的数据,或者这甚至是最好的方式...
* Create Sample Data
clear
set obs 3
gen str var1 = "a" in 1
replace var1="b" in 2
replace var1="c" in 3
gen var2= _n
* Find number of Unique Groupings to set obs
by var1 var2, sort: gen groups=_n==1
keep if groups==1
drop groups
di _N^2
set obs 9
* Create New Variable
forvalues i = 4(3)9 {
forvalues j = 5(3)9 {
forvalues k = 6(3)9 {
replace var1="a" if _n==`i'
replace var1="b" if _n==`j'
replace var1="c" if _n==`k'
}
}
}
sort var1
egen i=seq(), f(1) t(3)
tostring i, replace
gen NewVar=var1+i
list NewVar
+--------+
| NewVar |
|--------|
1. | a1 |
2. | a2 |
3. | a3 |
4. | b1 |
5. | b2 |
|--------|
6. | b3 |
7. | c1 |
8. | c2 |
9. | c3 |
+--------+
不幸的是,据我所知,没有简单的方法可以做到这一点 - 它需要相当数量的代码。虽然,我看到另一个提及cross
的答案或评论在这里非常有用。值得一试的另一个命令是joinby
。但即使使用这些方法中的任何一种,您也必须根据您希望“交叉组合”的变量将数据拆分为7个不同的集合。
无论如何,如果你还没有找到解决方案,那就好运。
答案 2 :(得分:0)
如果你只想要这7个变量的组合,你可以这样做:
keep v1 v2 v3 v4 v5 v6 v7
duplicates drop
list
然后您将获得这7个变量的唯一组合列表。您可以使用与原始数据集不同的名称保存文件。请确保您不直接保存数据集。否则您将丢失原始数据。