gpt4 book ai didi

Stata 字符串范围清洁

转载 作者:行者123 更新时间:2023-12-02 00:36:54 24 4
gpt4 key购买 nike

我正在 Stata 中清理一个字符串变量,该变量具有数值,但偶尔会有格式化为范围的值,如 1-501-3 等。

当我尝试解串这些变量时,这些讨厌的范围阻止我这样做。

我想做的是将范围替换为范围中第一个数字和最后一个数字的平均值。我尝试了以下字符串函数来执行此操作:

replace `var' = ((regexs(1) + regexs(3))/2) if regexm(`var', "([0-9]*)([\-])([0-9]*)")

但是,Stata 无法理解平均值 ((regexs(1) + regexs(3))/2),因为它读取 regexs(1) regexs(2) 作为子字符串。

我知道我可以通过创建新变量来做到这一点,但我正在使用的数据有数千个变量,所以我真的更愿意只替换现有的字符串。

关于如何做到这一点有什么想法吗?

提前致谢

最佳答案

这是一种将字符串分成 2 个(如果适用)并解串的方法:

#delimit;
clear;

set obs 4;

input str4 x str4 y;
"13" "4-7";
"1-50" "7";
"1-3" "9-20";
"" "4";

foreach var of varlist x y {;
split `var', parse("-") destring;
egen clean_`var' = rowmean(`var'1 `var'2);
drop `var'1 `var'2;
};

关于Stata 字符串范围清洁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28844148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com