Tuesday, 3 October 2017

Sas Moviendo El Arreglo Promedio


Tengo un siguiente conjunto de datos: Persona NGIF RAMN RFA1 2001 6 52 1 2002 1 23 1 2003 8 99 1 2004 20 100 4 2005 11 114 3 2006 9 138 1 2007 7 105 3 2008 15 190 2 2009 27 297 1 2010 22 207 1 2011 19 171 2 Quiero calcular para cada nivel RFA1 (que es 1-4), el promedio (RAMN total para un nivel RFA1 / total de ese nivel RFA1) usando matrices. Sin arreglos, si me divido y hago, obtengo resultado para nivel individual. El siguiente es el código: Mi problema es ¿Cómo escribo este código para todos los 4 niveles de RFA1 mediante matrices. Preguntó Sep 23 14 a las 3:49 Gracias por su respuesta Joe. He intentado esto con PROC MEANS y sí que están haciendo lo que se requiere. Pero estoy aprendiendo SAS y más fresco a él, y quiero aprender arrays también. Por lo tanto, estoy tratando de resolverlo mediante matrices. Creo que con 39amp39 estoy inicializando tres variables en una oración basada en la condición if. Por favor, perdóname por mi ignorancia y déjame saber a dónde me equivoco. Ndash Charlotte Sep 23 14 en 14: 51I incluyó una captura de pantalla para ayudar a aclarar mi problema: Estoy tratando de calcular algún tipo de media móvil y la desviación estándar en movimiento. La cosa es que quiero calcular los coeficientes de variación (stdev / avg) para el valor real. Normalmente esto se hace mediante el cálculo de la stdev y avg durante los últimos 5 años. Sin embargo a veces habrá observaciones en mi base de datos para las que no tengo la información de los últimos 5 años (quizás sólo 3, 2 etc). Es por eso que quiero un código que calculará la media y stdev, incluso si no hay información para el conjunto de 5 años. Además, como ves en las observaciones, a veces tengo información de más de 5 años, cuando este es el caso necesito algún tipo de media móvil que me permite calcular el promedio y stdev durante los últimos 5 años. Así que si una empresa tiene información durante 7 años necesito algún tipo de código que calculará el promedio y el stdev para, digamos, 1997 (por 1991-1996), 1998 (1992-1997) y 1999 (1993-1998). Como im no muy familiarizado con sas comandos que debe mirar (muy, muy groseramente) como: o algo así, realmente no tengo ni idea, voy a tratar de averiguarlo, pero vale la pena publicarlo si no voy a encontrar yo mismo. El Instituto de Investigación y Educación Digital Puede ver las películas de este seminario a través de los enlaces a continuación. Este seminario está diseñado para ayudarle a mejorar sus habilidades de gestión de datos SAS mediante el uso de matrices. Aquí está el programa en el que se basa el seminario. En este seminario cubriremos los siguientes diez temas: Primero ejecutaremos las opciones SAS para que podamos deshacernos de la fecha, el número de página, el centrado y el salto de página en la salida. Recodificación de variables Introducción del conjunto de datos faminc. Recodificación manual usando if-then. Recodificación con arrays usando if-then. Nota: En el código usamos los corchetes alrededor de la variable de subíndice i. La elección entre corchetes, corchetes o paréntesis es completamente arbitraria. Hemos decidido utilizar los corchetes como un recordatorio visual de que i es un subíndice y no una parte de un cálculo matemático. Aplicar el mismo cálculo matemático a muchas variables a la vez Invertir elementos en una escala de -3 a 3 usando matriz. Cálculo de variables nuevas Cálculo manual de las variables de ingreso tributario. Calculando las mismas variables de ingresos tributarios usando una matriz. Tenemos que usar dos matrices porque la primera matriz, Afaminc. Es la matriz de las variables existentes (faminc1 - faminc12) la segunda matriz, Ataxinc. Se crea como un marcador de posición donde almacenaremos las nuevas variables (taxinc1 - taxinc12). Colapso de las variables Creación manual de las variables del ingreso total por trimestre. Crear el ingreso total por variables de trimestre usando matrices. Identificar los patrones a través de las variables usando matrices En esta sección el objetivo es identificar los meses en los que el ingreso fue menos de la mitad del mes anterior y almacenar la información en las variables ficticias lowinc2 - lowinc12 looping durante los meses 2-12. Tenga en cuenta que el mes 1 no tiene mes anterior La variable nunca indica si el ingreso ha sido nunca menos de la mitad de un mes anterior para cualquier mes. Nota: El tamaño del array especificado en el paréntesis suele ser un número y SAS entiende que se supone que crea un array donde el índice oscila entre uno y el número entre paréntesis. Pero podemos especificar cualquier rango para el índice que se adapte a nuestro programa. Sólo estamos interesados ​​en las variables de ingresos bajos correspondientes a los meses 2-12 y por lo tanto, indicamos que el rango para el índice de matriz Alowinc debe ser de 2 a 12. Cambiar de largo a largo Cambiar de largo a largo creando sólo una variable - manualmente. En el conjunto de datos del problema mostramos lo que ocurre cuando nos olvidamos de incluir las declaraciones de salida apropiadas en el paso de datos. Cambiar de largo a largo creando solamente una variable usando arrays. Cambiar la configuración de ancho a largo creando múltiples variables (incluyendo variables de cadena) usando matrices. Remodelación de ancho a largo en presencia de sufijos de caracteres. En el ejemplo anterior teníamos sufijos numéricos (96, 97 y 98). Podemos cambiar la forma aunque tengamos sufijos de caracteres como old. Ahora y en el futuro. Comprender las funciones primero. último. Y la instrucción retain La sección anterior demostró cómo cambiar la forma de los conjuntos de datos de ancho a largo. Desafortunadamente, la reorganización de conjuntos de datos de largo a ancho es más compleja. Con el fin de comprender mejor cómo utilizar matrices para cambiar la forma de largo a ancho que tendrá que entender cómo el primero. y última. Funciones funcionan, así como comprender cómo funciona la sentencia de retención. Los siguientes son ejemplos de la sentencia de retención. Nos gustaría crear una nueva variable llamada newmeas que contenga los mismos valores que la medición pero con los valores faltantes rellenados. La variable newmeas debería tener un valor inicial de 0 y luego cambiar los valores cada vez que la medición tenga un valor que no falte. Omitir la sentencia de retención nos da el newmeas equivocado. Ahora es sólo una copia de la medición. En el siguiente ejemplo queremos crear una variable llamada new1 que contenga la suma acumulada de los valores en la medición de la variable. Tenga en cuenta que cuando la medición falta la suma debe permanecer sin cambios. Omitir la sentencia de retención nos da el new1 incorrecto. Mirando el primero. y última. Funciones. En el primer ejemplo creamos variables de indicador, primero y último. La primera variable indica la primera observación para cada persona, tal como se indica en id. La última variable indica la última observación para cada persona. Nota: Cuando utilice first. varname o last. varname primero debemos ordenar el conjunto de datos en la variable varname. Además, en el paso de datos siempre debemos preceder a first. varname o last. varname con una instrucción by varname. Combinación de la primera. Función con una sentencia de retención para obtener una suma acumulada y contar. Estaremos utilizando first. famid por lo que debemos ordenar el conjunto de datos en famid. Mediante la adición de una sentencia if last. famid al programa, se emite sólo la última observación por familia que muestra el sumwt final. Contar y meanwt para cada familia. Nota: No necesitamos recurrir los datos ya que ya está ordenado en famid. Remodelación de largo a ancho usando arreglos Usaremos el conjunto de datos de longarray creado a partir del amplio conjunto de datos y lo remodelaremos al formato original de gran formato. Estaremos utilizando first. famid por lo que debemos ordenar el conjunto de datos en famid. Comparaciones entre observaciones usando matrices Un uso más sutil de arrays. Un problema en la gestión de datos SAS es que no podemos hacer comparaciones entre las observaciones. Una solución a este problema es transponer los datos de largo a ancho entonces podemos utilizar el arreglo para hacer las comparaciones muy fácilmente. El objetivo es comparar cada observación con la observación anterior y la siguiente. Si son los mismos, entonces marque la observación. Necesitamos numerar las observaciones dentro de cada persona. Estaremos usando first. person en el proceso de hacer esto, por lo que primero debemos ordenar los datos en persona. Entonces crearemos la variable count que enumerará las observaciones dentro de cada persona. Ahora convertimos el conjunto de datos de largo a ancho. Nota: Estamos usando first. person y last. person pero no necesitamos recurrir los datos ya que ya está ordenado por persona. Ahora, vamos a encontrar a las personas que tienen el mismo valor para 3 observaciones en una fila. Este seminario se basa en ejemplos de los siguientes módulos de aprendizaje de SAS que se muestran a continuación. El contenido de este sitio web no debe ser interpretado como un endoso de cualquier sitio web, libro o producto de software en particular por la Universidad de California.

No comments:

Post a Comment