Stata 将多个响应制成表格
在一项旨在提高农业实践视频传播质量的调查中,变量之一是在传播过程中讨论了哪些不可协商的实践。例如,播种小麦有四种不可谈判的做法 我想创建一个返回4、3、2或1的变量,具体取决于讨论的实践 我首先将所有字符串响应编码为数字:Stata 将多个响应制成表格,stata,Stata,在一项旨在提高农业实践视频传播质量的调查中,变量之一是在传播过程中讨论了哪些不可协商的实践。例如,播种小麦有四种不可谈判的做法 我想创建一个返回4、3、2或1的变量,具体取决于讨论的实践 我首先将所有字符串响应编码为数字: gen SWI_ST_NNG1=q205_1_1 replace SWI_ST_NNG1="0" if SWI_ST_NNG1=="#NULL!" replace SWI_ST_NNG1="1" if SWI_ST_NNG1=="Luke warm water should
gen SWI_ST_NNG1=q205_1_1
replace SWI_ST_NNG1="0" if SWI_ST_NNG1=="#NULL!"
replace SWI_ST_NNG1="1" if SWI_ST_NNG1=="Luke warm water should be used for seed treatment"
gen SWI_ST_NNG2=q205_1_2
replace SWI_ST_NNG2="0" if SWI_ST_NNG2=="#NULL!"
replace SWI_ST_NNG2="2" if SWI_ST_NNG2=="Mixture of seed, Jaggery and cow urine should kept for"
gen SWI_ST_NNG3=q205_1_3
replace SWI_ST_NNG3="0" if SWI_ST_NNG3=="#NULL!"
replace SWI_ST_NNG3="3" if SWI_ST_NNG3=="Use of bavistin powder is must for seed treatment"
gen SWI_ST_NNG4=q205_1_4
replace SWI_ST_NNG4="0" if SWI_ST_NNG4=="#NULL!"
replace SWI_ST_NNG4="4" if SWI_ST_NNG4=="Seeds should be kept 12 to 15 hours for germination"
我们需要一个沙箱把事情弄清楚,因为你没有提供MCVE。看 本质上,序列中的变量j的值为j(1到4)或0,我认为您需要对非零进行计数。(否则,我认为返回1到4没有任何意义,因为如何从一个人编码1和3,从另一个人编码4?) 使用跨变量的循环可以轻松完成计数
clear
set obs 10
set seed 2803
forval j = 1/4 {
gen SWI_ST_NNG`j' = cond(runiform() < 0.5, `j', 0)
}
list, sep(0)
+-------------------------------------------+
| SWI_ST~1 SWI_ST~2 SWI_ST~3 SWI_ST~4 |
|-------------------------------------------|
1. | 0 0 0 4 |
2. | 1 0 0 0 |
3. | 0 2 0 0 |
4. | 1 2 3 4 |
5. | 1 2 3 4 |
6. | 1 2 3 0 |
7. | 1 2 3 0 |
8. | 0 2 3 4 |
9. | 1 0 3 4 |
10. | 1 2 3 0 |
+-------------------------------------------+
gen count = 0
quietly forval j = 1/4 {
replace count = count + (SWI_ST_NNG`j' > 0)
}
list, sep(0)
+---------------------------------------------------+
| SWI_ST~1 SWI_ST~2 SWI_ST~3 SWI_ST~4 count |
|---------------------------------------------------|
1. | 0 0 0 4 1 |
2. | 1 0 0 0 1 |
3. | 0 2 0 0 1 |
4. | 1 2 3 4 4 |
5. | 1 2 3 4 4 |
6. | 1 2 3 0 3 |
7. | 1 2 3 0 3 |
8. | 0 2 3 4 3 |
9. | 1 0 3 4 3 |
10. | 1 2 3 0 3 |
+---------------------------------------------------+
但是学习循环方法对于解决更复杂的问题非常有用
请注意,如果将变量编码为1或0,那么所需的计数将只是行和,使用
egen
可以轻松获得。对于大多数统计和数据管理目的而言,此类指标(也称为虚拟)变量是一种更好的编码 打开编辑器查看如何格式化代码。即:(1)突出显示一段代码(2)单击{}
图标对其进行格式化。
egen count2 = anycount(SWI*), values(1/4)