在 Stata 中没有标识符的情况下将数据从长重塑为宽
Reshape Data from Long to Wide without identifier in Stata
如何在 Stata 中将下面的数据集从长改成宽?
a1 a2
NAME Jane
SEX female
PHONE 234
SCORE 9
NAME John
SEX male
PHONE 444
SCORE 10
NAME Baba
SEX male
PHONE 777
SCORE 5
我试过使用 gen i = tag(a1)
生成一个 ID。但是,这并不能唯一标识每组重复数据。
您说得对,您需要一个标识符,实际上是两个标识符。但是 gen i = tag(a1)
是非法的 - 大概你的意思是 egen
- 更重要的是没有帮助。 egen, tag()
取决于已经存在的标识符,并且仅用于创建 (0, 1) 变量,而不是您在这里需要的。
这对我有用。请注意使用 Stata 代码创建数据示例:在 Stata 标签 wiki 上有更多关于此的内容。
clear
input str6 (a1 a2)
NAME Jane
SEX female
PHONE 234
SCORE 9
NAME John
SEX male
PHONE 444
SCORE 10
NAME Baba
SEX male
PHONE 777
SCORE 5
end
drop a1
egen id = seq(), block(4)
egen j = seq(), to(4)
reshape wide a2, i(id) j(j)
rename (a2*) (name sex phone score)
destring, replace
list
+------------------------------------+
| id name sex phone score |
|------------------------------------|
1. | 1 Jane female 234 9 |
2. | 2 John male 444 10 |
3. | 3 Baba male 777 5 |
+------------------------------------+
如何在 Stata 中将下面的数据集从长改成宽?
a1 a2
NAME Jane
SEX female
PHONE 234
SCORE 9
NAME John
SEX male
PHONE 444
SCORE 10
NAME Baba
SEX male
PHONE 777
SCORE 5
我试过使用 gen i = tag(a1)
生成一个 ID。但是,这并不能唯一标识每组重复数据。
您说得对,您需要一个标识符,实际上是两个标识符。但是 gen i = tag(a1)
是非法的 - 大概你的意思是 egen
- 更重要的是没有帮助。 egen, tag()
取决于已经存在的标识符,并且仅用于创建 (0, 1) 变量,而不是您在这里需要的。
这对我有用。请注意使用 Stata 代码创建数据示例:在 Stata 标签 wiki 上有更多关于此的内容。
clear
input str6 (a1 a2)
NAME Jane
SEX female
PHONE 234
SCORE 9
NAME John
SEX male
PHONE 444
SCORE 10
NAME Baba
SEX male
PHONE 777
SCORE 5
end
drop a1
egen id = seq(), block(4)
egen j = seq(), to(4)
reshape wide a2, i(id) j(j)
rename (a2*) (name sex phone score)
destring, replace
list
+------------------------------------+
| id name sex phone score |
|------------------------------------|
1. | 1 Jane female 234 9 |
2. | 2 John male 444 10 |
3. | 3 Baba male 777 5 |
+------------------------------------+