Aurelio Tobías · Importar y exportar datos > Archivo > Importar > Hoja de cálculo Excel (*.xls;...
Transcript of Aurelio Tobías · Importar y exportar datos > Archivo > Importar > Hoja de cálculo Excel (*.xls;...
Stata para usuarios de SPSS
Aurelio Tobías
Hospital de la Santa Creu i Sant PauBarcelona, 14/01/2019
2. Manejo y depuración de archivos y datos
Introducir datos
3
. edit
Introducir datos
4
Abrir y guardar datos
• Abrir una base de datos con formato Stata> Archivo > Abrir…. use archivo.dta. use archivo. use c:\datos\archivo. use "c:\Mis Documentos\ archivo"
• Es recomendable añadir la opción clear. use archivo, clear
5
Abrir y guardar datos
• Guardar una base de datos con formato Stata> Archivo > Guardar. save archivo.dta. save archivo. save c:\datos\archivo. save "c:\Mis Documentos\archivo"
• La opción replace. save archivo, replace> Archivo > Guardar como… . saveold archivo
6
Importar y exportar datos
• Las bases de datos se pueden importar (y exportar) a Stata copiando y pegando del fichero original
• Sin embargo hay que tener cuidado con el símbolo usado para los decimales (!)
• Stata puede importar (y exportar) archivos de tipo texto, hojas de cálculo de Excel, ficheros SAS XPORT, fuentes de datos OCBD y datos XML, a través de los menús o con los comandos import y export
7
Importar y exportar datos
• Importar> Archivo > Importar
• Exportar> Archivo > Exportar
8
Importar y exportar datos
> Archivo > Importar > Hoja de cálculo Excel (*.xls; *.xlsx)
> Archivo > Exportar > Datos a hoja de calculo Excel (*.xls; *.xlsx)
9
Ejemplo estudio EpiSER –
• Estudio transversal de base poblacional para estimar la prevalencia de enfermedades reumáticas en la población adulta española y conocer su distribución según características demográficas (FIS 99u0251)
• Muestra aleatoria de 400 individuos (Carmona et al. Rev Esp Reumatol 2001; 28: 18-2)
10
rural.dta
obs: 118vars: 5
urban.dta
obs: 282vars: 5
social.dta
obs: 400vars: 9
+
+
+
Variables demográficasIndicadores de salud
¿myepiser.dta?
11
Combinar bases de datos
• Añadir nuevas observaciones (filas) – append> Datos > Combinar conjuntos de datos > Añadir conjuntos de datos (append datasets)
. use data1, clear
. append using data2
. save newdataset, replace
12
Combinar bases de datos
• Añadir nuevas observaciones (filas) – append
13
rural.dta
obs: 118vars: 5
urban.dta
obs: 282vars: 5
health.dta
obs: 400vars: 5
+
. use rural, clear
. append using urban(label labheal already defined)
. describe
Contains data from rural.dtaobs: 400 vars: 5 15 Oct 2008 13:14size: 5,200 ------------------------------------------------------------------------------
storage display valuevariable name type format label variable label------------------------------------------------------------------------------code str6 %6s identification codehealth byte %9.0g labheal health statusbone float %9.0g bone densiometry (g/cm2)art byte %9.0g osteoarthritislum byte %9.0g lumbalgia------------------------------------------------------------------------------Sorted by:
Note: dataset has changed since last saved
. save health, replace(note: file health.dta not found)file health.dta saved
• Añadir nuevas variables (columnas) – merge> Datos > Combinar conjuntos de datos > Fusionar dos conjuntos de datos
. use data1, clear. merge 1:1 keyvar using data2. save newdataset, replace
Las bases de datos pueden ser fusionadas con diferente número de de filas: 1:1, m:1, 1:m, m:mDespués la fusión se crea una nueva variable de sistema _merge
Combinar bases de datos
15
Combinar bases de datos
16
1:1
m:1
data1datos en memoria
data2datos en archivo
Tipo defusión
Combinar bases de datos
• Añadir variables (columnas) – merge
17
health.dta
obs: 400vars: 5
social.dta
obs: 400vars: 9
+myepiser.dta
obs: 400vars: 13
. use health, clear
. merge 1:1 code using socialResult # of obs.-----------------------------------------not matched 0matched 400 (_merge==3)-----------------------------------------
. describeContains data from health.dta
obs: 400 vars: 14 20 Dec 2018 08:32size: 10,400
--------------------------------------------------------------------------------------------storage display value
variable name type format label variable label--------------------------------------------------------------------------------------------code str6 %6s identification codehealth byte %8.0g labheal health statusbone float %9.0g bone densiometry (g/cm2)art byte %8.0g osteoarthritislum byte %8.0g lumbalgiadoi long %dD_m_Y date of interviewdob long %dD_m_Y date of birthsex byte %8.0g genderweight int %8.0g weight (kg)height int %8.0g height (cm)area byte %8.0g educ byte %8.0g labeduc educational levelocup byte %8.0g labocup occupational status_merge byte %23.0g _merge--------------------------------------------------------------------------------------------Sorted by: code
Note: dataset has changed since last saved
18
. describe
...--------------------------------------------------------------------------------------------..._merge byte %23.0g _merge--------------------------------------------------------------------------------------------Sorted by: code
Note: dataset has changed since last saved
. tabulate _merge
_merge | Freq. Percent Cum.------------------------+-----------------------------------
matched (3) | 400 100.00 100.00------------------------+-----------------------------------
Total | 400 100.00
. drop _merge
. save myepiser, replacefile myepiser.dta saved
_merge = 1 si el individuo se encuentra sólo en la base de datos en memoria_merge = 2 si el individuo se encuentra sólo en la base de datos en disco_merge = 3 si el individuo se encuentra en ambas bases de datos
19
Combinar bases de datos
20
+ =_merge == 3
_merge == 1
+ =_merge == 2
_merge == 1
+ = _merge == 3
Datos en memoria
Datos en disco
Datos fusionados
Resumen
• Principales comandos para manejar archivos de datos. use, save, saveold. import, export. append, merge
21
Etiquetas
• Etiquetar conjunto de datos> Datos > Utilidades para datos > Utilidades para etiquetas > Etiquetar conjunto de datos. label data "contenido"
• Etiquetar variable> Datos > Utilidades para datos > Utilidades para etiquetas > Etiquetar variable. label var varname "desc"
22
Etiquetas para valores • Para etiquetar los valores de una
variable primero hay que definir las etiquetas y guardarlas con un nombre> Datos > Utilidades para datos > Utilidades para etiquetas > Manejar etiquetas de valor. label define lab # "" # "" …
• Después hay asignar estas etiquetas a la variable para etiquetar sus valores> Datos > Utilidades para datos > Utilidades para etiquetas > Asignar etiquetas de valores a las variables. label val varname lab
23
. use myepiser, clear
. label data "EpiSER study dataset"
. label var area "Area of residence"
. label define labyesno 0 "no" 1 "yes"
. label val art labyesno
. label val lum labyesno
. label list
labyesno:0 no1 yes
...
. save, replacefile myepiser.dta saved
24
Renombrar variables
• Renombrar una única variable> Datos > Utilidades para datos > Renombrar grupos de variables. rename old new
• Renombrar grupos de variables. rename (old1 old2 …) (new1 new2 …)
25
Etiquetar y renombrar
• Etiquetar variables y valores, y renombrar variables pueden realizarse interactivamente a través del Editor de Datos y el Manejador de Variables> Datos > Editor de datos > Editor de datos (Edit). edit> Datos > Manejador de variables. varmanage
• Todos los cambios realizados en ambas ventanas generarán sintaxis en la ventana de revisión
26
Manejador de variables
27
Manejador de variables
28
Crear, recodificar y reeemplazar
• Crear una nueva variable– Se pueden crear nuevas variables a
partir de una expresión dónde se combinen variables existentes, valores constantes y/o funciones matemáticas
> Datos > Crear o cambiar datos > Crear variable nueva.
29
generate varnueva = expresion
. use myepiser, clear(EpiSER study dataset)
. generate bmi=weight/((height/100)^2)
. label var bmi "body mass index"
. generate age=int((doi-dob)/365.25)
. label var age "age (years)"
. save, replacefile myepiser.dta saved
30
Crear, reeemplazar y recodificar
• Reemplazar valores de una variable– Se recomienda su uso con el operador if– Las condiciones para el operador if deben construirse con
los operadores relacionales == , != , > , >= , < , <=– Dos o más condiciones con el operador if pueden
combinarse con los operadores lógicos & (and) | (or)> Datos > Crear o cambiar datos > Cambiar el contenido de una variable. replace varname = expresion if condicion
31
. generate rheuma=0 if art==0 & lum==0(111 missing values generated). replace rheuma=1 if art==1 & lum==0(48 real changes made). replace rheuma=2 if art==0 & lum==1(34 real changes made). replace rheuma=3 if art==1 & lum==1(29 real changes made)
. label var rheuma "rheumatologic diseases"
. label define labrheuma 0 "none" 1 "osteoarthritis" 2 "lowback pain" 3 "both". label val rheuma labrheuma
. save, replacefile myepiser.dta saved
32
Crear, reeemplazar y recodificar• Recodificar valores de una variable
> Datos > Crear o cambiar datos > Otros comandos para transformar variables > Recodificar variable categórica. recode varname # = # …– Definir regla de recodificación para;
un único valor # = #varios valores # # = #rango de valores #/# = #
• La recodificación puede guardarse en una nueva variable. recode varname # = # … ,
generate(varnueva)
33
. recode sex 1=0 2=1(sex: 400 changes made). label define labsex 0 "male" 1 "female". label val sex labsex
. tabulate sex
gender | Freq. Percent Cum.------------+-----------------------------------
male | 172 43.00 43.00female | 228 57.00 100.00
------------+-----------------------------------Total | 400 100.00
. recode age min/25=1 25/50=2 50/75=3 75/max=4, generate(age4)(400 differences between age and age4). label define labage 1 "<25" 2 "25-50" 3 "50-75" 4 ">75". label val age4 labage
. tabulate age4RECODE of |age (age |(years)) | Freq. Percent Cum.
------------+-----------------------------------<25 | 48 12.00 12.00
25-50 | 194 48.50 60.5050-75 | 140 35.00 95.50
>75 | 18 4.50 100.00------------+-----------------------------------
Total | 400 100.00
. save, replace
34
Crear, reeemplazar y recodificar
• egen – extensión del comando generate– Permite crear nuevas variables
con funciones que realizan operaciones por filas (suma, media, mínimo, máximo)
– Mirar con detalle la ayuda sobre todas las funciones disponibles. help egen
> Datos > Crear o cambiar datos > Crear nueva variable (extensión).
35
egen varnueva = expresion
> Datos > Crear o cambiar datos > Crear nueva variable (extensión)
. egen ageq = cut(age), group(4)(10 missing values generated)
. label var ageq "age by quartiles"
. tabulate ageq
age by |quartiles | Freq. Percent Cum.
------------+-----------------------------------0 | 96 24.00 24.001 | 104 26.00 50.002 | 96 24.00 74.003 | 104 26.00 100.00
------------+-----------------------------------Total | 400 100.00
. save, replace
36
Convertir variables
• De texto a numérica – destring> Datos > Crear o cambiar datos > Otros comandos para transformar variables > Convertir variables de tipo alfanumérico a numérico. destring varname, generate(varnueva)
• De numéricas a texto – tostring> Datos > Crear o cambiar datos > Otros comandos para transformar variables > Convertir variables numéricas a alfanuméricas. tostring varname, generate(varnueva)
37
Convertir variables
• De texto a numérica – encode> Datos > Crear o cambiar datos > Otros comandos para transformar variables > Codificar etiquetas de variable alfanumérica. encode varname, generate(varnueva)
• De numéricas a texto – decode> Datos > Crear o cambiar datos > Otros comandos para transformar variables > Convertir variable numérica etiquetada a alfanumérica. decode varname, generate(varnueva)
38
Orden
• Ordenar variables en la base de datos– Reorganiza las variables colocándolas en
la posición en la que se especifican> Datos > Utilidades para datos > Cambiar orden de variables. order var1 var2 …
• Ordenar observaciones– Ordena ascendente las filas de la base de
datos por los valores de la(s) variable(s) especificadas> Datos > Ordenar. sort var1 var2 …
39
Duplicados
• Identifica (y elimina) observaciones con valores idénticos en alguna, varias o todas las variables> Datos > Utilidades para datos . duplicates report vars. duplicates list vars
. duplicates drop vars
40
* Nota: creamos de forma artificial una observación duplicada* unicamente para mostrar como tratar con duplicados en Stata* NO HACERLO NUNCA CON VUESTOR DATOS (!)
. expand 2 in 1(1 observation created)
. duplicates report code
Duplicates in terms of code
--------------------------------------copies | observations surplus
----------+---------------------------1 | 399 02 | 2 1
--------------------------------------
. duplicates list code
Duplicates in terms of code
+---------------+| obs: code ||---------------|| 1 011019 || 401 011019 |+---------------+
. duplicates drop code, force
Duplicates in terms of code
(1 observation deleted)
41
. expand 2 in 1(1 observation created)
. duplicates list
Duplicates in terms of all variables
+----------------------------------------------------------------------------------------------------------------------------+| obs: | code | health | bone | art | lum | doi | dob | sex | weight | height | area | educ | ocup || 1 | 011019 | good | .617 | no | no | 11 Jun 99 | 16 Sep 77 | female | 80 | 165 | urban | primary | housewife ||----------------------------------------------------------------------------------------------------------------------------|| bmi | age | rheuma | age4 | ageq | healthD1 | healthD2 | healthD3 | healthD4 | healthD5 || 29.38476 | 21 | none | <25 | 0 | 0 | 0 | 1 | 0 | 0 |+----------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------+| obs: | code | health | bone | art | lum | doi | dob | sex | weight | height | area | educ | ocup || 401 | 011019 | good | .617 | no | no | 11 Jun 99 | 16 Sep 77 | female | 80 | 165 | urban | primary | housewife ||----------------------------------------------------------------------------------------------------------------------------|| bmi | age | rheuma | age4 | ageq | healthD1 | healthD2 | healthD3 | healthD4 | healthD5 || 29.38476 | 21 | none | <25 | 0 | 0 | 0 | 1 | 0 | 0 |+----------------------------------------------------------------------------------------------------------------------------+
. duplicates drop
Duplicates in terms of all variables
(1 observation deleted)
42
Resumen
• Principales comandos para depurar datos. label, rename. generate, replace, recode, egen. destring, tostring, decode, encode. order, sort. duplicates
43