我正在尝试重新组织我的数据,但我正在努力弄清楚如何。
目前它的组织方式如下:
Person total Birmingham London Coventry Edinburgh
James 6 1 5
Kitty 9 2 3 1 3
Heather 3 2 1
John 5 2 2 1
我想把它重新组织成这样:
Person Place Visits
James total 6
James Birmingham 1
James London 0
James Coventry 5
James Edinburgh 0
Kitty total 9
Kitty Birmingham 2
Kitty London 3
Kitty Coventry 1
Kitty Edinburgh 3
Heather total 3
Heather Birmingham 0
Heather London 2
Heather Coventry 0
Heather Edinburgh 1
John total 5
John Birmingham 0
John London 2
John Coventry 2
John Edinburgh 1
我已经尝试过使用Stata命令reshape
,但还没有达到目标。
我认为我的主要问题是我有很多变量都是唯一的名字。而不是在reshape
命令中列出所有内容,还有另一种方法吗?
我无法在其他地方找到任何帮助帖子(可能因为我不确定如何描述问题)。
我也确定在Excel中有办法做到这一点,但我试图将所有分析保存在一个地方(Stata)。
答案 0 :(得分:1)
您需要为要重塑的变量添加前缀。您可以自动执行此操作,例如:
ds Person, not
rename (`r(varlist)') (Visits=)
然后reshape
应该是直截了当的:
reshape long Visits, i(Person) j(Place) string
答案 1 :(得分:1)
我的建议与@Andrei的精神相似,但细节上有重大差异。
从本质上讲,你不应该将total
变量视为与其他变量类似,因为它不是。否则,下游的分析可能比必要的更复杂,甚至是非常错误的。
clear
input str7 Person total Birmingham London Coventry Edinburgh
"James" 6 1 . 5 .
"Kitty" 9 2 3 1 3
"Heather" 3 . 2 . 1
"John" 5 . 2 2 1
end
rename (Birmingham-Edinburgh) (Visits=)
reshape long Visits, i(Person) string j(Place)
list, sepby(Person)
+---------------------------------------+
| Person Place total Visits |
|---------------------------------------|
1. | Heather Birmingham 3 . |
2. | Heather Coventry 3 . |
3. | Heather Edinburgh 3 1 |
4. | Heather London 3 2 |
|---------------------------------------|
5. | James Birmingham 6 1 |
6. | James Coventry 6 5 |
7. | James Edinburgh 6 . |
8. | James London 6 . |
|---------------------------------------|
9. | John Birmingham 5 . |
10. | John Coventry 5 2 |
11. | John Edinburgh 5 1 |
12. | John London 5 2 |
|---------------------------------------|
13. | Kitty Birmingham 9 2 |
14. | Kitty Coventry 9 1 |
15. | Kitty Edinburgh 9 3 |
16. | Kitty London 9 3 |
+---------------------------------------+