根据其他变量替换变量中的值
Replace value in variable based on other variables
假设我有以下数据集,其中缺少 Country
的一些条目:
clear
input strL Person strL Country Population
'ABC' "USA" 3999
'ABC' " " 544
'ABC' " " 7546
'ABD' "China" 10000
'BCG' "India" 6789
'BCG' " " 5454
'ABD' " " 10000
end
我希望用 Person
中的匹配值替换缺失的国家/地区。对于所有 Person
'ABC',国家应该是相同的。
我需要一个不同于手动编写脚本 replace Country = "USA" if Person == "ABC"
的解决方案,因为我的数据集对 Person
.
有超过 10,000 个独特的观察结果
数据集应如下所示:
Person Country Population
'ABC' "USA" 2514
'ABC' "USA" 388
'ABC' "USA" 8245
'ABD' "China" 10000
'BCG' "India" 6789
'BCG' "India" 5454
'ABD' "China" 10000
您的输入和输出不符合 Stata 标准。 Stata 不使用单引号作为字符串分隔符或在列表中显示字符串分隔符。
Stata 不会将一个或多个空格视为字符串缺失。
尽管如此,这可能有助于字符串变量,例如 Country
:
clear
input strL Person strL Country Population
"ABC" "USA" 3999
"ABC" " " 544
"ABC" " " 7546
"ABD" "China" 10000
"BCG" "India" 6789
"BCG" " " 5454
"ABD" " " 10000
end
bysort Person (Country) : replace Country = Country[_N] if missing(trim(Country))
list, sepby(Person)
+-----------------------------+
| Person Country Popula~n |
|-----------------------------|
1. | ABC USA 7546 |
2. | ABC USA 544 |
3. | ABC USA 3999 |
|-----------------------------|
4. | ABD China 10000 |
5. | ABD China 10000 |
|-----------------------------|
6. | BCG India 5454 |
7. | BCG India 6789 |
+-----------------------------+
假设我有以下数据集,其中缺少 Country
的一些条目:
clear
input strL Person strL Country Population
'ABC' "USA" 3999
'ABC' " " 544
'ABC' " " 7546
'ABD' "China" 10000
'BCG' "India" 6789
'BCG' " " 5454
'ABD' " " 10000
end
我希望用 Person
中的匹配值替换缺失的国家/地区。对于所有 Person
'ABC',国家应该是相同的。
我需要一个不同于手动编写脚本 replace Country = "USA" if Person == "ABC"
的解决方案,因为我的数据集对 Person
.
数据集应如下所示:
Person Country Population
'ABC' "USA" 2514
'ABC' "USA" 388
'ABC' "USA" 8245
'ABD' "China" 10000
'BCG' "India" 6789
'BCG' "India" 5454
'ABD' "China" 10000
您的输入和输出不符合 Stata 标准。 Stata 不使用单引号作为字符串分隔符或在列表中显示字符串分隔符。
Stata 不会将一个或多个空格视为字符串缺失。
尽管如此,这可能有助于字符串变量,例如 Country
:
clear
input strL Person strL Country Population
"ABC" "USA" 3999
"ABC" " " 544
"ABC" " " 7546
"ABD" "China" 10000
"BCG" "India" 6789
"BCG" " " 5454
"ABD" " " 10000
end
bysort Person (Country) : replace Country = Country[_N] if missing(trim(Country))
list, sepby(Person)
+-----------------------------+
| Person Country Popula~n |
|-----------------------------|
1. | ABC USA 7546 |
2. | ABC USA 544 |
3. | ABC USA 3999 |
|-----------------------------|
4. | ABD China 10000 |
5. | ABD China 10000 |
|-----------------------------|
6. | BCG India 5454 |
7. | BCG India 6789 |
+-----------------------------+