编辑:我应该生成更好的数据。字符串变量不一定是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相同的解决方案?