Aurelio Tobías · Importar y exportar datos > Archivo > Importar > Hoja de cálculo Excel (*.xls;...

22
Stata para usuarios de SPSS Aurelio Tobías Hospital de la Santa Creu i Sant Pau Barcelona, 14/01/2019 2. Manejo y depuración de archivos y datos

Transcript of Aurelio Tobías · Importar y exportar datos > Archivo > Importar > Hoja de cálculo Excel (*.xls;...

Page 1: Aurelio Tobías · 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

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

Page 2: Aurelio Tobías · 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

Introducir datos

3

. edit

Introducir datos

4

Page 3: Aurelio Tobías · 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

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

Page 4: Aurelio Tobías · 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

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

Page 5: Aurelio Tobías · 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

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

Page 6: Aurelio Tobías · 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

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

Page 7: Aurelio Tobías · 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

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

Page 8: Aurelio Tobías · 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

• 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

Page 9: Aurelio Tobías · 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

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

Page 10: Aurelio Tobías · 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

. 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

Page 11: Aurelio Tobías · 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

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

Page 12: Aurelio Tobías · 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

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

Page 13: Aurelio Tobías · 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

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

Page 14: Aurelio Tobías · 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

Manejador de variables

27

Manejador de variables

28

Page 15: Aurelio Tobías · 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

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

Page 16: Aurelio Tobías · 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

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

Page 17: Aurelio Tobías · 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

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

Page 18: Aurelio Tobías · 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

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

Page 19: Aurelio Tobías · 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

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

Page 20: Aurelio Tobías · 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

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

Page 21: Aurelio Tobías · 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

* 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

Page 22: Aurelio Tobías · 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

Resumen

• Principales comandos para depurar datos. label, rename. generate, replace, recode, egen. destring, tostring, decode, encode. order, sort. duplicates

43