# Re: st: flagging a specific pattern of values within observations

 From "Sergiy Radyakin" To Subject Re: st: flagging a specific pattern of values within observations Date Tue, 24 Apr 2007 21:23:41 +0200

Hello Friedrich,

this will work only for small number of options, i.e. 3 as here. Notice that in the list
you specify not all the "options", but all "combinations". This will grow very fast (n!).
So it will take 120 combinations to list (and to check!) for n=5.

The following will check if v1, v2, and v3 are different (c==1 if not):
gen c=1-inlist(v1, v2, v3)*inlist(v2,v1,v3)*inlist(v3,v1,v2)

or using built-in function diff:

egen c=diff(v1 v2 v3)

:)

(there will be 5 terms in the RHS for 5 variables, etc -- the number grows as n)
There is no check that 1<=vi<=n. It is unnecessary if the data stems from, say users choosing
options from drop-down lists. But if necessary, this can be easily accomplished by also checking
if inlist(v1, 1, 2,...,n)*inlist(v2, 1, 2,...,n)*...*inlist(vn, 1, 2,...,n) is equal to 1.
(n more conditions, totalling 2n (or n+1 if the shortcut is used), instead of n!)

But ideally I would like to write something like:
gen k= set(v1 v2 v3)=set(1 2 3)
(order of elements does not matter for sets)

or alternatively
gen k= sorted(v1 v2 v3)=(1 2 3)
(to have a sorted list compared with the benchmark).

Stata allows to compare lists:
di (1 2 3)==(1 2 3)

di (1 2 3)==(1 3 2)

but does not allow this:

gen k= (v1 v2 v3)==(1 2 3)

So some questions for the Gurus:
-- how to subtract an element from a list?
-- does Stata support sets? (e.g. at the level of Pascal sets)
-- v1 v2 ...vn are chars: "a" "b" etc. Need X=concatenated sorted v1..vn. E.g:

v1 v2 v3 X
a b c abc
b a c abc
a b a aab
a a a aaa

What is the shortest way? What if vi-s can be strings (not just chars)?
ab aa ca aaabca

Best regards,
Sergiy

----- Original Message ----- From: "Friedrich Huebler" <huebler@rocketmail.com>
To: <statalist@hsphsun2.harvard.edu>
Sent: Tuesday, April 24, 2007 8:08 PM
Subject: Re: st: flagging a specific pattern of values within observations

```This should do it.

input fid q11a q11b q11c
55 2 3 1
21 1 2 1
end
gen q = string(q11a) + string(q11b) + string(q11c)
gen tag = !(inlist(q,"123","132","213","231","312","321"))

Friedrich

```
```Makes sense...thanks for finding the flaw.

Best,
Alan

> No, this will not work(2-2-2):
>
> ----------------------------
> fid     q11a    q11b    q11c
> 55      2        3       1
> 21      1        2       1
> 22      2        2       2
> ----------------------------
>
> Prime numbers seem to be a better idea.
>
> Best,
>   Sergiy
>
>
> ----- Original Message -----
> To: <statalist@hsphsun2.harvard.edu>
> Sent: Tuesday, April 24, 2007 7:30 PM
> Subject: Re: st: flagging a specific pattern of values within
observations
>
>
> > How about something like this:
> >
> > clear
> > input fid q11a q11b q11c
> > 55  2 3 1
> > 21  1 2 1
> > end
> >
> > tempvar checkit
> > egen `checkit'=rowtotal(q11a q11b q11c)
> > generate byte flag=1 if `checkit' !=6
> > list if flag==1
> >
> > Best,
> > Alan
> >
> >
> > On 4/24/07, Anirudh V. S. Ruhil <ruhil@ohio.edu> wrote:
> >> A colleague is trying to accomplish something in a different
stats
> >> package
> >> and asked if STATA could effect the solution. "Of course",
said I. Now I
> >> am
> >> scratching my head for the code.  Individuals were asked to
rank-order 3
> >> choices. Person 55 did fine, but not Person 21. How can I
generate a flag
> >> for such respondent-errors?
> >>
> >> ----------------------------
> >> fid     q11a    q11b    q11c
> >> 55      2               3       1
> >> 21      1               2       1
> >> ----------------------------
> >>
> >>
> >> Ani
```

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
```*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```