如何解决如何拆分数据并将其分配到指定的变量中?
我在 Stata 中有关于当前情况感觉的数据。有七种感受。数据按如下格式存储(注意数据类型是字符串,一个人可以回复1个以上)
感觉 |
---|
4,7 |
1,3,4 |
2,5,6,2,4,7 |
由于数据是字符串,我尝试用
分隔split feeling,parse (,)
我得到了结果
感觉1 | 感觉2 | 感觉3 | 感觉4 | 感觉5 | 感觉6 | 感觉7 |
---|---|---|---|---|---|---|
4 | 7 | |||||
1 | 3 | 4 | ||||
2 | 5 | 6 | 7 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
然而,这不是我想要的结果。这是代表感受的数量应该进入正确的变量。例如。
感觉1 | 感觉2 | 感觉3 | 感觉4 | 感觉5 | 感觉6 | 感觉7 |
---|---|---|---|---|---|---|
4 | 7 | |||||
1 | 3 | 4 | ||||
2 | 5 | 6 | 7 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
我不确定是否有针对此类问题的任何内置命令或函数。我正在考虑使用 forval
循环遍历每个变量中的每个值,并尝试将其转换为正确的变量。
解决方法
在这里对不同的值进行循环就足够了。我以在 Stata 标签维基中解释的形式给出你的例子,因为它更有帮助,然后给出代码来获取你想要的变量作为数字变量。
* Example generated by -dataex-. For more info,type help dataex
clear
input str13 feeling
"4,7"
"1,3,4"
"2,5,6,7"
"1,2,4,7"
end
forval j = 1/7 {
gen wanted`j' = `j' if strpos(feeling,"`j'")
gen better`j' = strpos(feeling,"`j'") > 0
}
l feeling wanted1-better3
+---------------------------------------------------------------------------+
| feeling wanted1 better1 wanted2 better2 wanted3 better3 |
|---------------------------------------------------------------------------|
1. | 4,7 . 0 . 0 . 0 |
2. | 1,4 1 1 . 0 3 1 |
3. | 2,7 . 0 2 1 . 0 |
4. | 1,7 1 1 2 1 3 1 |
+---------------------------------------------------------------------------+
如果你想要一个由
产生的字符串结果 gen wanted`j' = "`j'" if strpos(feeling,"`j'")
如果感觉的数量为 10 或更多,您将需要更仔细的代码,例如搜索 "1"
会在 "10"
内找到它。
具有不同值 1 或 0 的指标(有人说是虚拟的)变量对于此类数据的大多数分析来说更有价值。
注意Stata相关的来源,例如
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。