【发布时间】:2015-09-24 16:09:45
【问题描述】:
假设我有var1 是连续的:
clear
set obs 1000
gen var1 = runiform()
sum var1
现在我想根据var1 的范围创建var2。我可以这样做:
gen var2 = "Lowest" if var1<.25
replace var2 = "Low" if var1>=.25 & var1<.5
replace var2 = "High" if var1>=.5 & var1<.75
replace var2 = "Highest" if var1>=.75
我希望能够在一行中做到这一点。伪代码:
gen var2 = (ranges(0 .25 .5 .75 1) values("Lowest" "Low" "High" "Highest"))
在R 中使用cut 做一些非常相似的事情的方法可以在Create categorical variable in R based on range 找到
是否有任何命令可以在 Stata 中执行类似于 R 版本的操作?想象一下,有 10,000 个范围需要进入 var2。那么更好的方法会有很大帮助。
另一种在 Stata 的一行上执行此操作的方法很笨拙,可以在 http://www.stata.com/support/faqs/data-management/multiple-operations/ 找到:
generate var2 = cond(var1<=.25, "Lowest", cond(var1<=.50, "Low", cond(var1<=.75, "High", cond(var1<=1.00, "Highest", ""))))
有没有更好的办法?
【问题讨论】: