String 使用折叠计算字符串变量值的出现次数
在下面这样的数据集中String 使用折叠计算字符串变量值的出现次数,string,count,stata,collapse,String,Count,Stata,Collapse,在下面这样的数据集中 clear input patid str2 dx 1 qw 1 qe 1 qw 2 qw 2 qw 2 qs 2 qs 3 qe 3 qe 3 qs 3 qw 3 qw 3 qw 3 qs 4 qe 5 qa 5 qs 5 qw 5 qe 5 qw end 我发现我可以使用下标[1]计算字符串变量dx每个值的出现次数,或者如果我使用collapse[2]将dx转换为数字标签 在使用折叠时,
clear
input patid str2 dx
1 qw
1 qe
1 qw
2 qw
2 qw
2 qs
2 qs
3 qe
3 qe
3 qs
3 qw
3 qw
3 qw
3 qs
4 qe
5 qa
5 qs
5 qw
5 qe
5 qw
end
我发现我可以使用下标[1]计算字符串变量dx
每个值的出现次数,或者如果我使用collapse
[2]将dx
转换为数字标签
在使用折叠时,是否有一个命令或语法可以直接从字符串变量本身计算出现次数(无需转换等)
e、 g.如果我尝试按(patid dx)
折叠(计数)countdx=dx,则返回错误消息变量dx未找到
(当然,这不应该起作用:当我尝试按(patid)折叠(count)countdx=dx时,返回错误类型不匹配
)
注:
[1]
[2]
您的示例(而不是您的问题)都暗示您希望分别计算标识符
patid
的每个不同值
clear
input patid str2 dx
1 qw
1 qe
1 qw
2 qw
2 qw
2 qs
2 qs
3 qe
3 qe
3 qs
3 qw
3 qw
3 qw
3 qs
4 qe
5 qa
5 qs
5 qw
5 qe
5 qw
end
bysort patid dx : gen count = _N
tabdisp patid dx , c(count)
----------------------------------
| dx
patid | qa qe qs qw
----------+-----------------------
1 | 1 2
2 | 2 2
3 | 2 2 3
4 | 1
5 | 1 1 1 2
----------------------------------
有关此领域的技术回顾,请参阅。搜索有关dm0042
的内容会找到很多相关示例
即使是中等规模的问题,tabdisp
也不会特别实用。这里提到它是为了直接显示前一个命令的作用
将此扩展到折叠,一个简单的设备是
gen one = 1
collapse (sum) one, by(patid dx)
尽管我应该提到,合同
是为了这个目的而更明确地编写的(参见1998年考克斯对其前身的讨论)
另一方面,如果确实创建了count
变量,则
collapse (mean) count, by(patid dx)
将产生完全相同的效果
考克斯,纽约州,1998年。正在将数据集折叠为频率。Stata技术公告44:2-3
gen one = 1
collapse (sum) one, by(patid dx)
collapse (mean) count, by(patid dx)