【问题标题】:replace command gives "invalid syntax" error替换命令给出“无效语法”错误
【发布时间】:2017-03-15 20:07:10
【问题描述】:

所以我的命令是这样的:

replace tradeflowcodepart = tradeflowcodepart[_n-1] + 1 if tradeflowcodepart = tradeflowcodepart[_n-1] & partnername = partnername[_n-1]

它不断给我一个invalid syntax 错误。

tradeflowcodepart 是二进制变量,if 后面的另一个是字符串。

我的最终目标是让每个观察结果都独一无二,这样我就可以在另一个表中 merge 它(我计划在其中进行类似的练习以使每个观察结果都独一无二)。所以如果之前的tradeflowcodepartpartnername和当前观察中的一样,那么我想给tradeflowcodepart加一个数字,让观察变得独一无二。

【问题讨论】:

  • 当你测试相等性时,你需要== 而不是=。见help operators
  • 如果你不断增加它,你的变量不会长时间保持二进制。

标签: replace syntax unique stata


【解决方案1】:

在 Stata 中,if 运算符后面总是有一个逻辑表达式,evaluates 为 TRUE 或 FALSE。如果为 TRUE,则执行if 之前的部分(命令本身),否则中止。鉴于它是一个逻辑表达式,Stata 使用 == 符号,而不是 = 正确指定,您的命令将是:

replace tradeflowcodepart = tradeflowcodepart[_n-1] + 1 if tradeflowcodepart == tradeflowcodepart[_n-1] & partnername == partnername[_n-1]

【讨论】:

  • Aborted 在这里是完全错误的词。假设该命令是合法的,那么重点是根据if 条件是真还是假,不同地对待观察。甚至不总是忽略 if 条件为假的观察结果,因为当条件为假时,generate y = 42 if x > 1 会导致 y 的缺失值。
猜你喜欢
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2012-02-19
  • 2014-02-27
  • 1970-01-01
相关资源
最近更新 更多