在 Stata 错误类型不匹配 r(109) 中用数字数据替换字符串;

Replace string with numerical data in Stata error type mismatch r(109);

我正在尝试重新格式化以下数据

treatment
text-only
text-only
text-only
text-only
text-only
text-only
text+photo
text+photo
text+photo
text+photo
text+photo
text+photo
text+video
text+video

作为二进制数据 (0,1,2) 我使用以下代码,但收到以下错误。我究竟做错了什么?

谢谢!

replace treatment = 0 if treatment == "text-only"
type mismatch
r(109);

想通了!

replace treatment = "0" if treatment == "text-only"

这个有效^

我认为你并不是真的想创建一个二进制变量(只有零和一个),而只是一个数字变量。

您 运行 遇到的问题是您想用整数替换字符串。这是两种不同的数据类型,在 Stata 中,您不能拥有具有两种不同数据类型的变量。

你通过将整数变成字符串解决了这个问题。这解决了一个问题,但可能会产生其他问题。解决问题的最佳方法是使用 encode

这是一种保留原始变量并基于原始字符串创建新数值变量的简单方法。您的代码将如下所示:

encode treatment, gen(id_treatment)

这将为您提供一个名为 id_treatment 的新变量,它将是数字,但具有与原始字符串相对应的值标签。如果需要,您还将拥有原始字符串变量。