2014-12-04 194 views
-2

我需要得到Stata代码的帮助,该代码可以使我获得独特的变量组合。我有7个变量,我需要运行一个代码,可以给我所有这些变量的独特组合。每行将是所有7个变量的独特组合。Stata中变量的唯一组合

一个例子: V1:A,B,C V2:1,2,3 A1 A2 A3,B1,B2,B3,C1 C2 C3

所有变量的独特组合 - 总9个的组合。

我有15000个观测值。我在R中得到了一个代码,但R不会在大数据(内存错误)上得到输出。我想在Stata中得到这个。

+0

'help cross'可能会有所帮助。目前还不清楚你想要什么。 – 2014-12-04 12:34:29

+0

谢谢大家,这里是这个问题的链接,我需要在R帮助。http://stackoverflow.com/questions/27264952/unique-combinations-of-all-variables/27265123?noredirect=1#comment43038726_27265123 – Freewill 2014-12-05 03:30:12

+1

I猜测这是一个改进,但只有当一个Stata用户知道或不介意研究R. @尼克和我已经提到了一些选择。你尝试过吗?如果是的话,为什么他们不适合你?如果不是,为什么不呢? – 2014-12-05 03:40:52

回答

3

这并不是特别清楚你想要创建或完成什么。这里没有代码,甚至连R代码都没有显示你想在R中完成什么。没有可重复的例子。您可能想查看egen, group()。 (先前的答案,从@Dimitriy五Masterov,塔塔的有经验的用户,这种效应两次错误地人不知道塔塔删除垃圾邮件,想必)

或者,尝试从SSC安装groups

更新:答案听起来更像fillin。为“独特”阅读“独特”。

+0

这并不是说我们对任何事情一无所知,它是*六字*填充废话来击败垃圾邮件过滤器并不构成对[SO]的有效,高质量的答案。系统不断将答案标记为低质量并将其放入审核队列中。如你所做的那样,写一些不那么简单和表面上少的垃圾邮件就简单了,问题就会消失。 – talonmies 2014-12-04 19:21:13

+0

@talonmies我的观点是,一个真诚善意,善于行事的人做出了错误的决定,我尽我所能纠正错误。没有版主能够知道这里涵盖的所有语言,这是其他用户可以提供帮助的地方。 – 2014-12-04 19:42:45

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组。

无论如何,祝你好运,如果你还没有找到你的解决方案。

+0

这是一段代码,没有评论它的作用或如何推广。请注意'if _n =='是'in'中笨拙的替代方案。 – 2014-12-23 09:24:24

+0

非常感谢代码。最后,我放弃了STATA,并使用了我想要的独特组合来分解我的输入数据集中的一些项目。 R能够生成我可以使用的选项。我使用了以下内容:'pairs = unique(expand.grid(V1,V2,V3,V4,V5,V6))' – Freewill 2014-12-27 21:54:52

0

如果你只是想有7个变量的组合,你可以做这样的:

keep v1 v2 v3 v4 v5 v6 v7 
    duplicates drop 
    list 

然后你会得到的那些变量7独特的组合名单。您可以使用原始数据集中的不同名称保存该文件。请确保您不直接保存数据集。否则,您将失去原始数据。