Stata:从一个单元格中的多个字符串条目中创建一个虚拟对象
Stata: Create a dummy out of multiple string entries in one cell
我有一个看起来像这样的数据集(当然要大得多,一个单元格中最多有 5 个条目):
iso3 variable
GBR 1994
USA
FRA 1993, 1995
我希望它看起来像这样:
iso3 year dummy
GBR 1993 0
GBR 1994 1
GBR 1995 0
USA 1993 0
USA 1994 0
USA 1995 0
FRA 1993 1
FRA 1994 0
FRA 1995 1
问题当然出在FRA
。我正在考虑编写一个字符串搜索并循环遍历所有年份以在找到年份时创建一个虚拟对象,但我不知道如何将其应用于每个 iso3
类别。
Stata 中的 R 中是否有类似于 apply
函数的东西?
使用 split
、reshape
和 fillin
的组合
clear
input str3 iso3 str20 var
GBR "1994"
USA
FRA "1993, 1995"
end
split var, parse(",") destring generate("yr")
list
drop var
reshape long yr, i(iso3) j(junk)
generate dummy = 1
fillin iso3 yr
replace dummy = 0 if dummy==.
drop if yr==.
drop junk _fillin
list, sepby(iso3)
给我们
+---------------------+
| iso3 yr dummy |
|---------------------|
1. | FRA 1993 1 |
2. | FRA 1994 0 |
3. | FRA 1995 1 |
|---------------------|
4. | GBR 1993 0 |
5. | GBR 1994 1 |
6. | GBR 1995 0 |
|---------------------|
7. | USA 1993 0 |
8. | USA 1994 0 |
9. | USA 1995 0 |
+---------------------+
我有一个看起来像这样的数据集(当然要大得多,一个单元格中最多有 5 个条目):
iso3 variable
GBR 1994
USA
FRA 1993, 1995
我希望它看起来像这样:
iso3 year dummy
GBR 1993 0
GBR 1994 1
GBR 1995 0
USA 1993 0
USA 1994 0
USA 1995 0
FRA 1993 1
FRA 1994 0
FRA 1995 1
问题当然出在FRA
。我正在考虑编写一个字符串搜索并循环遍历所有年份以在找到年份时创建一个虚拟对象,但我不知道如何将其应用于每个 iso3
类别。
Stata 中的 R 中是否有类似于 apply
函数的东西?
使用 split
、reshape
和 fillin
clear
input str3 iso3 str20 var
GBR "1994"
USA
FRA "1993, 1995"
end
split var, parse(",") destring generate("yr")
list
drop var
reshape long yr, i(iso3) j(junk)
generate dummy = 1
fillin iso3 yr
replace dummy = 0 if dummy==.
drop if yr==.
drop junk _fillin
list, sepby(iso3)
给我们
+---------------------+
| iso3 yr dummy |
|---------------------|
1. | FRA 1993 1 |
2. | FRA 1994 0 |
3. | FRA 1995 1 |
|---------------------|
4. | GBR 1993 0 |
5. | GBR 1994 1 |
6. | GBR 1995 0 |
|---------------------|
7. | USA 1993 0 |
8. | USA 1994 0 |
9. | USA 1995 0 |
+---------------------+