2017-03-15 148 views
1

所以我的命令是这样的:替换命令授予“无效语法”错误

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

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

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

我最终的目标是让每一个观察都是独一无二的,这样我就可以用另一张桌子(我打算做一个类似的练习,使每一个观察都是唯一的)merge。因此,如果前面的tradeflowcodepartpartnername与当前观察中的相同,那么我想向tradeflowcodepart添加一个数字以使观察具有唯一性。

+1

你需要''==不是'='当你测试是否相等。见'帮助操作员'。 –

+2

如果你不断增加它,你的变量将不会保持二进制。 –

回答

0

在Stata之后的if运算符总是出现一个逻辑表达式,其中evaluates为TRUE或FALSE。如果为TRUE,则执行if(该命令本身)之前的部分,否则中止。鉴于这是一个逻辑表达式,塔塔使用==标志,而不是=正确指定,你的命令是:

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

中止在这里是相当错误的词。假设该命令是合法的,那么问题的关键是根据'if'条件是真还是假来处理观察结果。即使if情况为false的观察结果也不会被忽略,因为当条件为假时,如果x> 1,则产生y = 42导致缺少'y'值。 –