2014-12-04 3 views
-2

Мне нужна помощь в получении кода Stata, который может получить мне уникальные комбинации varibles. У меня есть 7 переменных, и мне нужно запустить код, который может дать мне уникальную комбинацию из всех этих переменных. Каждая строка будет уникальной комбинацией всех 7 переменных.Уникальные комбинации переменных в Stata

Пример: V1: А, В, С V2: 1, 2, 3 A1 A2 A3, В1 В2 В3, С1 С2 С3

Уникальное сочетание всех переменных - всего 9 комбинаций.

У меня есть 15000 наблюдений. Я получил код в R, но R не получит результат на больших данных (ошибка памяти). Я хочу получить это в Stata.

+0

'help cross' может помочь. Неясно, чего вы хотите. –

+0

Спасибо всем, вот ссылка на тот же вопрос. Мне нужна помощь в R. http://stackoverflow.com/questions/27264952/unique-combinations-of-all-variables/27265123?noredirect=1#comment43038726_27265123 – Freewill

+1

I предположим, это улучшение, но только если пользователь Stata знает или не возражает против изучения R. @Nick, и я упомянул некоторые варианты. Вы их пробовали? Если да, то почему они не работали для вас? Если нет, почему бы и нет? –

ответ

3

Не совсем понятно, что вы хотите создать или сделать. Здесь нет кода, даже код R, показывающий, как то, что вы хотите, сделано в R. Нет воспроизводимого примера.

Возможно, вы захотите зарегистрироваться egen, group(). (Предыдущий ответ на этот эффект от @Dimitriy В. Мастеров, опытный пользователь Stata, был дважды неправильно удалены как спам, предположительно, люди, не зная Stata.)

В качестве альтернативы, попробуйте установить groups от SSC.

ОБНОВЛЕНИЕ: Ответ больше похож на fillin. Для «уникальных» читайте «отличные».

+0

Не то, чтобы мы ни о чем не знаем, это то, что * шесть слов, наполненных бессмысленностью, чтобы победить спам-фильтр, не представляют собой правильного, качественного ответа на [SO]. Система продолжает отмечать ответ как низкое качество и помещает его в очередь просмотра. Было бы так же легко написать что-то менее кратковременное и поверхностно меньшее количество спама, как вы это сделали, и проблема исчезнет. – talonmies

+0

@talonmies Моя точка зрения состоит в том, что человек, действуя добросовестно и с добрыми намерениями, принял неправильное решение, и я старался исправить это. Никакой модератор не может знать все языки, описанные здесь, где могут помочь другие пользователи. –

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'. –

+0

Спасибо за код. Я закончил тем, что отказался от STATA и рухнул несколько элементов в моем исходном наборе данных, используя факторы, чтобы придумать уникальные комбинации, которые я искал. R удалось создать варианты, которые я мог бы использовать. Я использовал следующее: 'pairs = unique (expand.grid (V1, V2, V3, V4, V5, V6))' – Freewill

0

Если вы просто хотите сочетание того, что 7 переменных, вы можете сделать это следующим образом:

keep v1 v2 v3 v4 v5 v6 v7 
    duplicates drop 
    list 

Тогда вы получите список уникальных комбинаций этих 7 переменных. Вы можете сохранить файл с другим именем из исходного набора данных. Убедитесь, что вы не сохраняете набор данных напрямую. В противном случае вы потеряете исходные данные.