有一些不确定性(这意味着,缺乏信息)有关您的变量是不是字符串或数字和什么是什么对齐,你不给变量名。因此,这缺乏一个最小的,完整的和可验证的例子。见https://stackoverflow.com/help/mcve但这种技术可能会有所帮助。我不会显式地循环观察(不是行:Stata不是电子表格)。
* 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 |
+---------------------------------------------------------------------------+
这里
_n
是运行1个向上观察数。
mod(_n, 2)
是将观测值除以2得到的余数,因此奇数为1,偶数为0。
您可能想要destring
什么是字符串,但应该是数字。
编辑这里有另一种方法来做到这一点,但它取决于所有变量是字符串。
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)
拼写是Stata。 30多年来它一直不是STATA。 –