2017-09-15 24 views
-1

私のデータセットは以下の通りです。奇数行に偶数行を追加するにはどうすればよいですか?

1. ZARA. cotton. 35. 28. 27. 350. 0 
2.   125. 3200. 1. 5. 32. 41 
3. Mango. nylon. 35. 27. 28. 320. 0 
4.   125. 3050. 1. 5. 33. 40 

などとなる。

Stataを使用して偶数行を奇数行に移動したいとします。

はそこに(つまり、情報の欠如)、いくつかのあいまいさは、あなたの変数は文字列または数値であるかどうかについてです、何と整列しているかについて

loop { 
     i = 1 
     move 2i th row to 2i-1th row 
     i = i + 1 
     if i= 2k 
     finish } 
+0

スペルはStataです。 30年以上の間、STATAではありませんでした。 –

答えて

0

使用して考えると、あなたは変数名を与えることはありません。したがって、これは、最小で完全で検証可能な例には及ばない。 https://stackoverflow.com/help/mcveを参照してください。ただし、この方法が役立ちます。私は明示的に観測をループしません(行ではなく、Stataはスプレッドシートではありません)。

_nここ

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input str6 v1 str7 v2 str5 v3 str3(v4 v5) str4 v6 str2 v7 
"ZARA." "cotton." "35." "28." "27." "350." "0" 
""  "125." "3200." "1." "5." "32." "41" 
"Mango." "nylon." "35." "27." "28." "320." "0" 
""  "125." "3050." "1." "5." "33." "40" 
end 

quietly forval j = 8/13 { 
    local i = `j' - 6 
    gen v`j' = v`i'[_n+1] if mod(_n, 2) == 1 
} 

drop if mod(_n, 2) == 0 

list 

    +---------------------------------------------------------------------------+ 
    1. |  v1 |  v2 | v3 | v4 | v5 | v6 | v7 | v8 | v9 | v10 | v11 | 
    | ZARA. | cotton. | 35. | 28. | 27. | 350. | 0 | 125. | 3200. | 1. | 5. | 
    |---------------------------------------------------------------------------| 
    |     v12     |     v13     | 
    |     32.     |     41     | 
    +---------------------------------------------------------------------------+ 

    +---------------------------------------------------------------------------+ 
    2. |  v1 |  v2 | v3 | v4 | v5 | v6 | v7 | v8 | v9 | v10 | v11 | 
    | Mango. | nylon. | 35. | 27. | 28. | 320. | 0 | 125. | 3050. | 1. | 5. | 
    |---------------------------------------------------------------------------| 
    |     v12     |     v13     | 
    |     33.     |     40     | 
    +---------------------------------------------------------------------------+ 

は1つのアップを実行している観測数です。

mod(_n, 2)は、観測数を2で割った余りであり、奇数の場合は1、偶数の場合は0です。

destring文字列は何でもかまいませんが数値である必要があります。

EDITこれを行う別の方法がありますが、すべての変数が文字列であることが条件です。

clear 
input str6 v1 str7 v2 str5 v3 str3(v4 v5) str4 v6 str2 v7 
"ZARA." "cotton." "35." "28." "27." "350." "0" 
""  "125." "3200." "1." "5." "32." "41" 
"Mango." "nylon." "35." "27." "28." "320." "0" 
""  "125." "3050." "1." "5." "33." "40" 
end 

gen long id = _n 
gen odd = mod(_n, 2) 
reshape long v, i(id) j(varno) 
replace id = ceil(id/2) 
replace varno = varno + 6 if !odd 
drop if missing(v) 
drop odd 
reshape wide v, i(id) j(varno) 
関連する問題