Несмотря на отсутствие хорошего примера данных или попытки кода, могут быть внесены предложения:
clear
input str7 Number str3 Cluster str6 Rating
"017;092" "Z12" "High"
"400;401" "Z14" "Medium"
"523" "Z98" "Low"
end
replace Number = subinstr(Number, ";", " ", .)
gen count = wordcount(Number)
gen long id = _n
expand count
bysort id : replace Number = word(Number, _n)
list, sepby(id)
+----------------------------------------+
| Number Cluster Rating count id |
|----------------------------------------|
1. | 017 Z12 High 2 1 |
2. | 092 Z12 High 2 1 |
|----------------------------------------|
3. | 400 Z14 Medium 2 2 |
4. | 401 Z14 Medium 2 2 |
|----------------------------------------|
5. | 523 Z98 Low 1 3 |
+----------------------------------------+
Код здесь основан на предположении, что после удаления двоеточий из Number
оставшихся элементоввсе считаются словами в смысле Статы.Если это не так, вы должны указать, что является проблематичным, и может быть предложен альтернативный код.
РЕДАКТИРОВАТЬ: более общий код:
clear
input str7 Number str3 Cluster str6 Rating
"017;092" "Z12" "High"
"400;401" "Z14" "Medium"
"523" "Z98" "Low"
end
split Number, parse(;)
local nvars : word count `r(varlist)'
gen long id = _n
expand `nvars'
forval j=1/`nvars' {
bysort id: replace Number = Number`j' if _n == `j'
}
drop if missing(Number)
list, sepby(id)