Stata 无效语法和程序错误

Stata 无效语法和程序错误,stata,Stata,Stata说我的命令包含无效语法,并且存在程序错误:代码与右大括号在同一行 编辑: forvalue n=1/18 { if f_3_`n'_==1 { local i= `0' local y=`i'+1 gen ownagri_`y' = f123a_`y'_ replace ownagri_`y' = . if f_2_sel_`n' ==1 local i = `i'+1

Stata说我的命令包含无效语法,并且存在程序错误:代码与右大括号在同一行

编辑:

forvalue n=1/18 {
    if f_3_`n'_==1 {
        local i= `0'
        local y=`i'+1 
            gen ownagri_`y' = f123a_`y'_
            replace ownagri_`y' = . if f_2_sel_`n' ==1 
        local i = `i'+1
    }
    else if f_3_`n'_==2 {
        local i= `0'
        local y=`i'+1 
            gen agri_`y' = f126_a1_`n'_
            replace agri_`y' = .if f_2_sel_`n' ==1 
        local i = `i'+1
    }
    else if f_3_`n'_==3 {
        local i= `0'
        local y=`i'+1 
            gen nonagri_`y' = f126_a1_`n'_
            replace nonagri_`y' = . if f_2_sel_`n' ==1 
        local i = `i'+1
    }
    else if f_3_`n'_==4 {
        local i=`0'
        local y=`i'+1 {
            gen nonagriself_`y' = f128_`n'_
            replace nonagriself_`y' = . if f_2_sel_`n' ==1 
        local i = `i'+1
    }
    else if f_3_`n'_==5 {
        local i=`0'
        local y=`i'+1 
            gen military_`y' = . if f_2_sel_`n' ==1  
        local i = `i'+1
    }}
}
我修改了代码,程序似乎可以运行,但生成的结果似乎不完整。结果如下:

forvalue n = 1/18 {
    if f_3_`n'_==1 {
        local y1 = 1 
        gen ownagri_`y1' = f123a_`y1'_ 
        replace ownagri_`y' = . if f_2_sel_`n'_ ==1 
        local y1 = `y1'+1
    }
    else if f_3_`n'_==2 {
        local y2 = 1 
        gen agri_`y2' = f126_a1_`y2'_ 
        replace agri_`y2' = . if f_2_sel_`n'_ ==1 
        local y2 = `y2'+1
    }
    else if f_3_`n'_==3 {
        local y3 = 1
        gen nonagri_`y3' = f126_a1_`y3'_ 
        replace nonagri_`y3' = . if f_2_sel_`n'_ ==1 
        local y3 = `y3'+1
    }
    else if f_3_`n'_==4 {
        local y4 = 1
        gen nonagriself_`y4' = f128_`y4'_ 
        replace nonagriself_`y4' = . if f_2_sel_`n'_ ==1 
        local y4 = `y4'+1
    }
    else if f_3_`n'_==6 {
        local y5 = 1
        gen military_`y5' = f129a_`y5'_
        replace military_`y5' = . if f_2_sel_`n'_ ==1 ,modify
        local y5 = `y5'+1
    }
}

为什么?

已经做出了具体评论:

a。最后一行旁边的
}
应该是
}
(威廉·利索夫斯基)

b。线条像

(20,070 missing values generated)
(2,194 real changes made, 2,194 to missing)
(19,229 missing values generated)
(1,129 real changes made, 1,129 to missing)
被评估为

if f_3_`n'_==1 
这通常不是我们想要的。更多信息请参见。但这不是语法错误

新的具体评论:

c。线路

if f_3_`n'_[1] ==1 
具有应删除的伪
{

一般性意见:

答:在没有上下文的情况下向我们抛出大量代码是一种糟糕的问题风格。你是新来的,这很好,但同样有可供你遵循的建议,例如

B.这里没有关于您尝试做什么的上下文,也没有数据示例。Statalist关于如何在结转到其他站点中以简单的小修改来呈现数据示例的建议(例如,关于分隔符[CODE]和{/CODE]的建议在这里是不相关的)

C.每个可以移动的分支中都有重复代码,从而产生:

local y=`i'+1 {

我们无法确定此代码是否是您想要的,但它看起来合法,并且比您的原始代码短。

您在发布的代码的下一行最后一行显示了两个大括号。这比应该存在的代码多了一个。代码Stata抱怨是第二个右大括号。但如果我删除了一个Stata,它将显示意外的文件结尾,仍然不起作用。我已更正了大括号…但仍然存在无效语法。另请参见
if f_3_`n'==1
等行的计算结果为
if f_3_`n'[1]==1
这通常不是我想要的。我已经阅读了这篇文章…有什么方法可以解决这个问题吗?非常感谢你的耐心!!!我很抱歉我的质量不好的问题…下一次会改进它的。forvalue命令中是否可以有“local”?因为对于ea来说,你应该像Y1Y2Y3Y4Y5一样在可能的情况下,它们是不同的……您可以循环1到5次,并在循环中参考
y`local'
help for values
中的4个示例中有3个是这种形式的,因此它被显著地记录下来。
local i = `0'
local y = `i'+1 

forvalue n = 1/18 {
    if f_3_`n'_==1 {
        gen ownagri_`y' = f123a_`y'_
        replace ownagri_`y' = . if f_2_sel_`n' ==1 
    }
    else if f_3_`n'_==2 {
        gen agri_`y' = f126_a1_`n'_
        replace agri_`y' = .if f_2_sel_`n' ==1 
    }
    else if f_3_`n'_==3 {
        gen nonagri_`y' = f126_a1_`n'_
        replace nonagri_`y' = . if f_2_sel_`n' ==1 
    }
    else if f_3_`n'_==4 {
        gen nonagriself_`y' = f128_`n'_
        replace nonagriself_`y' = . if f_2_sel_`n' ==1 
    }
    else if f_3_`n'_==5 {
        gen military_`y' = . if f_2_sel_`n' ==1  
    }
}

local i = `i'+1