replace命令给出“替换”;无效语法";错误

replace命令给出“替换”;无效语法";错误,replace,syntax,unique,stata,Replace,Syntax,Unique,Stata,所以我的命令是这样的: replace tradeflowcodepart = tradeflowcodepart[_n-1] + 1 if tradeflowcodepart = tradeflowcodepart[_n-1] & partnername = partnername[_n-1] 它一直给我一个无效语法错误 tradeflowcodepart是一个二进制变量,如果是一个字符串,则后面的另一个变量是一个二进制变量 我的最终目标是使每个观察结果都是唯一的,这样我就可以将它与

所以我的命令是这样的:

replace tradeflowcodepart = tradeflowcodepart[_n-1] + 1 if tradeflowcodepart = tradeflowcodepart[_n-1] & partnername = partnername[_n-1]
它一直给我一个
无效语法
错误

tradeflowcodepart
是一个二进制变量,如果
是一个字符串,则
后面的另一个变量是一个二进制变量


我的最终目标是使每个观察结果都是唯一的,这样我就可以
将它与另一个表合并(在那里我计划做一个类似的练习,使每个观察结果都是唯一的)。因此,如果前面的
tradeflowcodepart
partnername
与当前观察中的相同,那么我想在
tradeflowcodepart
中添加一个数字,以使观察结果唯一。

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

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

当您测试是否相等时,您需要
=
而不是
=
。请参阅
帮助运算符
。如果不断递增,变量将不会长期保持二进制。这里的“中止”一词完全错误。假设该命令是合法的,那么重点是根据
if
条件是真还是假,观察结果的处理是不同的。如果
条件为假,则忽略
条件为假的观察结果甚至不总是这样,因为当条件为假时,
如果x>1,则生成y=42。