替换类型不匹配(数字到字符串)
Replace type mismatch (numeric to string)
我想在 Stata age_cat
中基于 age
创建一个新变量。我的代码:
gen age_cat = age
replace age_cat = "Adult" if age>18 | "0-5 years" if age >=0 & age<=5 | "6-11 years" if age>=6 & age<=11 | "12-18 years" if age>=12 & age<=18
我收到类型不匹配错误:
type mismatch
r(109);
我该如何解决这个问题?我知道 encode
可以将字符串替换为数字。有没有办法反过来做?
直接错误很简单。您将 age
复制到 age_cat
,因此 age_cat
显然是一个数字变量,就像 age
一样。然后您尝试使用字符串值 replace
它。那是 type mismatch
并且 Stata 摆脱了困境。
或者,如果age
确实是一个字符串变量,那么将其与18
等数值进行比较也是一个type mismatch
。
您的其余语法无论如何都会失败。逻辑运算符|
(或)可用于分隔输入条件。它永远不能用于分隔不同的结果。
假设 age
是数字:
gen age_cat = "Adult" if inrange(age, 19, .)
replace age_cat = "12-18 years" if inrange(age, 12, 18)
replace age_cat = "6-11 years" if inrange(age, 6, 11)
replace age_cat = "0-5 years" if inrange(age, 0, 5)
我添加了代码,这样算作超过 18 岁的缺失年龄将不会被归类为 Adult
。
这是另一种方法:
gen age_cat = cond(age > 18, "Adult", cond(age >= 12, "12-18 years", cond(age >= 6, "6-11 years", "0-5 years))) if age < .
我在其中设置了明确的缺失值陷阱。 cond()
等同于各种语言中的 ifelse()
。如果您需要更多详细信息,另请参阅 this tutorial。
还有recode
,吸引了很多人
我想在 Stata age_cat
中基于 age
创建一个新变量。我的代码:
gen age_cat = age
replace age_cat = "Adult" if age>18 | "0-5 years" if age >=0 & age<=5 | "6-11 years" if age>=6 & age<=11 | "12-18 years" if age>=12 & age<=18
我收到类型不匹配错误:
type mismatch
r(109);
我该如何解决这个问题?我知道 encode
可以将字符串替换为数字。有没有办法反过来做?
直接错误很简单。您将 age
复制到 age_cat
,因此 age_cat
显然是一个数字变量,就像 age
一样。然后您尝试使用字符串值 replace
它。那是 type mismatch
并且 Stata 摆脱了困境。
或者,如果age
确实是一个字符串变量,那么将其与18
等数值进行比较也是一个type mismatch
。
您的其余语法无论如何都会失败。逻辑运算符|
(或)可用于分隔输入条件。它永远不能用于分隔不同的结果。
假设 age
是数字:
gen age_cat = "Adult" if inrange(age, 19, .)
replace age_cat = "12-18 years" if inrange(age, 12, 18)
replace age_cat = "6-11 years" if inrange(age, 6, 11)
replace age_cat = "0-5 years" if inrange(age, 0, 5)
我添加了代码,这样算作超过 18 岁的缺失年龄将不会被归类为 Adult
。
这是另一种方法:
gen age_cat = cond(age > 18, "Adult", cond(age >= 12, "12-18 years", cond(age >= 6, "6-11 years", "0-5 years))) if age < .
我在其中设置了明确的缺失值陷阱。 cond()
等同于各种语言中的 ifelse()
。如果您需要更多详细信息,另请参阅 this tutorial。
还有recode
,吸引了很多人