Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Fwd: Automation: moving values to eliminate blank cells from variables.


From   Nick Cox <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: Fwd: Automation: moving values to eliminate blank cells from variables.
Date   Mon, 24 Jun 2013 16:44:22 +0100

No looping should be needed or attempted here. The composite string
variable doesn't help much, as you only need to take it apart again.
In a sentence, you need a double -reshape- with reordering in between.

This may help:

. l

     +------------------------+
     | X1   X2   X3   X4   X5 |
     |------------------------|
  1. |  1    .    .    2    . |
  2. |  1    2    3    .    . |
  3. |  1    2    .    3    4 |
  4. |  .    1    .    2    . |
     +------------------------+

. gen id = _n

. reshape long X, i(id)

. drop if missing(X)

. bysort id (_j) : gen j = _n

. drop _j

. reshape wide X , i(id) j(j)

. l

     +------------------------+
     | id   X1   X2   X3   X4 |
     |------------------------|
  1. |  1    1    2    .    . |
  2. |  2    1    2    3    . |
  3. |  3    1    2    3    4 |
  4. |  4    1    2    .    . |
     +------------------------+


Nick
[email protected]


On 24 June 2013 16:27, John Adam Roberts <[email protected]> wrote:
>  Specifically, the form allowed for up to 15 organizations to be entered into
>  a particular set of fields, but many forms were not filled out in order and
>  I need to correct for this.
>
>  Example of what I have:
>   (X1-X6 are the variables, and the numbers below represent where the
>  observations are found.  e.g. in row 1, 2 is under the X4.  This refers to
>  the fact that the second observation is listed under variable X4, when it
>  should be under X2.)
>
>  fig. 1
>  X1    X2    X3    X4    X5    X6
>   1                     2
>   1      2      3
>   1      2             3      4
>           1             2
>
>  Example of what I need to achieve:
>  fig. 2
>  X1    X2    X3    X4    X5    X6
>   1      2
>   1      2      3
>   1      2      3      4
>   1      2
>
>
>  I have built a string variable Y that holds where the information is.
>  e.g.
>  for row 1 fig.1, it is    "1, , ,2, , "
>  for row 2 fig.1, it is    "1,2,3, , , "
>  for row 3 fig.1, it is    "1,2, ,3,4, "
>
>  Now I need to implement a loop to actually move the values from the cells
>  they are in, to where they should be.
>  This is the code structure that I have been trying to implement.
>>
>> foreach _n in _N{
>>         **sets macro to the relevant cell of Y, and figures out how many
>> values I have in the
>>         **macro
>> local posY = Y[_n]
>> local n_models: word count "`posY'"
>> foreach z in "`posY'"{
>>
>> ** replace cell with the contents of the variable it should have (as
>> identified in Y)
>>   forval i = 1/"`n_models'" {
>> local y: word `i' of "`posY'"
>> replace Bidder_`i' = Bidder_`y'
>> }
>> }
>>
>> ** make all remaining variables blank
>>         forval i = "`n_model'"/15 {
>> replace Bidder_`i' = ""
>> }
>>
>> }
>
>
>  Any help on how to make this work, or even a different approach to the
>  problem would be greatly appreciated.
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index