编辑:我应该生成更好的数据。字符串变量不一定是destring
能够的。我只是在这里偷懒(我不知道如何生成随机字母)。
我有一个包含很多我想要的字符串的数据集collapse
,但似乎通常collapse
不能很好地放置字符串,尤其是(firstnm)
and (count)
。这里有一些类似的数据。
clear
set obs 9
generate mark = .
replace mark = 1 in 1
replace mark = 2 in 6
generate name = ""
generate random = ""
local i = 0
foreach first in Tom Dick Harry {
foreach last in Smith Jones Jackson {
local ++i
replace name = "`first' `last'" in `i'
replace random = string(runiform())
}
}
我想collapse
在“标记”上,这很简单,带有replace
下标。
replace mark = mark[_n - 1] if missing(mark)
但是我collapse
的失败并type mismatch
出现错误。
collapse (firstnm) name (count) random, by(mark)
如果我使用(first)
,则第一个错误会清除,但(count)
仍然失败。是否有避免额外by
操作的解决方案?
似乎以下工作有效,但对我的数据来说也会更耗时。
generate nonmissing_random = !missing(random)
egen nonmissing_random_count = count(nonmissing_random), by(mark)
collapse (first) name nonmissing_random_count, by(mark)
或者是否有任何有助于使用collapse
相同的解决方案?