es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Sintaxis inválida en el bucle putexcel de Stata?

Estoy escribiendo un programa para exportar datos por año utilizando el código putexcel, y no estoy seguro de dónde está el error en lo siguiente:

* Crear locales emparejadas para los años
    local year 2000 2001 2002 2003 2004 2005
    local col B D F H J L
    local name year1 year2 year3 year4 year5 year6

<pre><code>* Contar el número de variables en la local    
    local count: word count `year'

* Recorrer las locales emparejadas
    forval mycounter = 1/`count'{
        local myyear:   word `mycounter' of `year'
        local mycol:    word `mycounter' of `col'
        local myname:   word `mycounter' of `name'


    estpost tabstat variable1 if level == 1 && year == `myyear', stat(sum) 
    mat variable1_`myname' = e(sum)
    estpost tabstat variable2 if level == 4 && year == `myyear', stat(count)
    mat variable2_`myname' = e(count)

    mat vars_`myname' = variable1_`myname', variable2_`myname' 
    putexcel `mycol'7 = matrix(vars_`myname')
</code></pre>

}

Estoy obteniendo un error de ‘sintaxis inválida’. Lo extraño es que el programa puede recorrer y crear matrices para el año1 hasta el año4. ¿Alguien puede ayudarme a identificar cuál podría ser el problema? ¿Podría ser un problema con la forma en que está escrita el bucle o con el conjunto de datos en sí? Muchas gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con el código está relacionado con el uso del símbolo ampersand (&) en las declaraciones if dentro de los comandos estpost tabstat. Stata utiliza el ampersand como un operador lógico, pero en este contexto, se interpreta como una sintaxis inválida.

    Para solucionar el problema, puedes reemplazar los ampersands con la palabra “and” para especificar las condiciones lógicas en la declaración if. Por ejemplo:

    estpost tabstat variable1 if level == 1 and year == `myyear', stat(sum)
    estpost tabstat variable2 if level == 4 and year == `myyear', stat(count)
    

    Esto debería resolver el error de sintaxis inválida y permitir que el programa recorra todos los años.

Comments are closed.