El primer paso para la realización de cualquier análisis estadístico es la elaboración de la base de datos que contenga la información que hemos de analizar. Para construir una base de datos existen muchas herramientas alternativas. Sin duda una de las más sencillas de utilizar (siempre y cuando la base de datos no sea excesivamente grande) es una simple hoja de cálculo, como las que ofrecen Microsoft Excel o LibreOfice Calc.
Las reglas para construir una hoja de cálculo que pueda servir para un análisis estadístico son muy simples:
Cada fila debe ser un caso (un paciente o sujeto experimental)
Cada columna debe ser una variable.
Cada columna debe estar encabezada con el nombre de la variable que represente.
Las casillas con valores perdidos deben dejarse en blanco, o al menos utilizar un código estándar que luego pueda interpretarse como tal sin posibilidad de confusion.
Debe evitarse dejar filas vacías, columnas vacías, insertar figuras o introducir decoraciones de cualquier tipo.
Hay que vigilar con especial cuidado en la introduccion de valores numéricos no mezclar puntos (.) con comas (,). Si en una misma columna escribimos el número 2,3 y más adelante 7.2, R interpretará todos los valores de la variable como caracteres no como números.
De la misma forma, en una columna donde se registran valores numéricos no deben introducirse caracteres, pues en tal caso R interpretará la variable como de tipo carácter y no como numérica.
A modo de ejemplo, en el campus virtual de la asignatura, o pinchando aquí podemos descargar la hoja de cálculo endocrino.xlsx
en la que se muestran parte de las variables medidas en un estudio transversal realizado, diseñado originalmente con el objetivo de estimar las prevalencias de diabetes mellitus (DM) en la población de Telde (Gran Canaria), así como para identificar los factores asociados con aquella. En el estudio se incluyeron 1030 sujetos con edades comprendidas entre los 30 y 82 años, que respondieron a un cuestionario diseñado para obtener información sobre la edad, sexo, historia personal y familiar de diabetes mellitus y estilos de vida. Se realizaron mediciones antropométricas y de presión arterial. Se tomaron asimismo muestras de sangre sobre las que se obtuvieron diversas mediciones (glucemia, lípidos, marcadores de inflamación, hemostasia, etc).
A continuación se muestran las primeras lineas de este archivo:
Para leer este archivo con R deberemos ejecutar los tres comandos siguientes:
library(openxlsx)
setwd("c:/Users/aulas/Downloads/")
telde = read.xlsx("endocrino.xlsx")
library(openxlsx)
, carga en memoria la librería que permite leer archivos Excel.setwd("c:/Users/aulas/Downloads/")
indica a R la carpeta en la que se encuentra el archivo. Nótese que en R las carpetas se especifican mediante la barra “/”, y no mediante la barra inversa “\” habitual en Windows.telde = read.xlsx("endocrino.xlsx")
lee los datos y los guarda dentro de un objeto llamado telde
. Este objeto es la base de datos ya leída por R. En la terminología de R, telde
es un objeto de tipo data.frame
.
Si la base se ha leido correctamente, su nombre debe aparecer en la ventana superior derecha de Rstudio, bajo la pestaña Environment
:
Si el nombre de la base de datos no aparece ahí es que no se ha leído correctamente.
Podemos ver las primeras líneas de esta base de datos simplemente tecleando head(telde)
en la consola y pulsando Return
. De esta forma podemos hacernos una primera idea de qué variables contiene y qué tipo de valores toma:
head(telde)
## ID EDAD SEXO PESO TALLA SEDENTARIO INSTRUCCION TAS TAD HTA_conocida
## 1 22 51 1 86.3 174 0 Primer grado 125 80 1
## 2 65 33 1 81.8 175 0 Segundo grado 120 80 0
## 3 116 40 1 105.0 173 1 Segundo grado 150 100 0
## 4 144 62 1 98.0 172 0 Primer grado 155 100 0
## 5 204 33 1 124.0 181 0 Segundo grado 130 90 0
## 6 337 33 1 93.0 177 1 Segundo grado 110 70 0
## HTA_OMS A_DIAB ECV_B TABACO ALCOHOL STATIN CINTURA CADERA OBCENT_ATP
## 1 1 1 1 0 1 1 104 101.5 1
## 2 0 0 0 1 1 0 86 89.0 0
## 3 1 1 0 1 1 0 116 107.0 1
## 4 1 0 0 1 0 0 104 103.0 1
## 5 1 1 0 0 0 0 130 122.0 1
## 6 0 1 0 0 1 0 108 106.0 1
## COLESTEROL HDL LDL LDL_C TG CnoHDL ApoA ApoB LPA A1C hba1
## 1 190 50 123 120 - 140 86 140 138.1 78 4.78 6.1730 7.9
## 2 217 42 144 140 - 160 155 175 93.1 94 2.39 5.5820 7.2
## 3 288 44 NA <NA> 448 244 122.7 120 39.30 5.3850 7.1
## 4 225 45 153 140 - 160 132 180 115.8 101 7.63 5.3850 6.6
## 5 224 58 154 140 - 160 62 166 135.2 86 24.90 5.1880 6.3
## 6 163 40 111 100 - 120 59 123 98.5 71 2.41 4.8925 6.0
## CREATININA GLUCB SOG Tol_Glucosa DM conocida SM PCR INSULINEMIA PAI_1
## 1 0.9 101 122 IFG 0 Normal 1 0.34 16.2 47.8
## 2 1.0 103 100 IFG 0 Normal 0 0.32 19.8 57.2
## 3 1.0 103 90 IFG 0 Normal 1 0.58 11.5 38.5
## 4 0.9 109 96 IFG 0 Normal 1 0.32 17.8 32.4
## 5 0.8 107 69 IFG 0 Normal 1 0.32 11.6 32.0
## 6 0.9 103 117 IFG 0 Normal 0 0.34 22.7 71.7
## fvw fibri HMC HOMA IR ecnos ppr fibratos CETP PON_192
## 1 115.0 2.40 14.00 4.036687 1 ab pp No <NA> QR
## 2 17.8 2.89 40.72 5.031426 1 bb pp No <NA> QQ
## 3 91.0 2.71 15.34 2.922293 1 bb pp No <NA> QR
## 4 96.1 2.45 15.33 4.786689 1 bb pp No B1B1 RR
## 5 75.0 3.78 8.64 3.062178 1 <NA> <NA> No <NA> <NA>
## 6 117.0 3.53 13.20 5.768352 1 bb pp No <NA> QR
Podemos ver su estructura con más detalle mediante la función str()
, lo que nos permite comprobar si las variables numéricas se han leído como numéricas y si las variables tipo carácter se han leido como caracteres:
str(telde)
## 'data.frame': 1030 obs. of 50 variables:
## $ ID : num 22 65 116 144 204 337 458 541 551 557 ...
## $ EDAD : num 51 33 40 62 33 33 68 56 55 46 ...
## $ SEXO : num 1 1 1 1 1 1 1 1 1 1 ...
## $ PESO : num 86.3 81.8 105 98 124 93 81 99 92 94.3 ...
## $ TALLA : num 174 175 173 172 181 177 174 174 179 169 ...
## $ SEDENTARIO : num 0 0 1 0 0 1 0 1 1 0 ...
## $ INSTRUCCION : chr "Primer grado" "Segundo grado" "Segundo grado" "Primer grado" ...
## $ TAS : num 125 120 150 155 130 110 120 110 130 120 ...
## $ TAD : num 80 80 100 100 90 70 70 70 80 80 ...
## $ HTA_conocida: num 1 0 0 0 0 0 0 0 0 0 ...
## $ HTA_OMS : num 1 0 1 1 1 0 0 0 0 0 ...
## $ A_DIAB : num 1 0 1 0 1 1 1 0 0 1 ...
## $ ECV_B : num 1 0 0 0 0 0 0 0 0 0 ...
## $ TABACO : num 0 1 1 1 0 0 0 0 0 1 ...
## $ ALCOHOL : num 1 1 1 0 0 1 0 1 1 1 ...
## $ STATIN : num 1 0 0 0 0 0 0 1 0 0 ...
## $ CINTURA : num 104 86 116 104 130 108 100 114 105 109 ...
## $ CADERA : num 102 89 107 103 122 ...
## $ OBCENT_ATP : num 1 0 1 1 1 1 0 1 1 1 ...
## $ COLESTEROL : num 190 217 288 225 224 163 217 306 283 218 ...
## $ HDL : num 50 42 44 45 58 40 49 53 62 44 ...
## $ LDL : num 123 144 NA 153 154 111 138 205 186 120 ...
## $ LDL_C : chr "120 - 140" "140 - 160" NA "140 - 160" ...
## $ TG : num 86 155 448 132 62 59 149 239 175 271 ...
## $ CnoHDL : num 140 175 244 180 166 123 168 253 221 174 ...
## $ ApoA : num 138.1 93.1 122.7 115.8 135.2 ...
## $ ApoB : num 78 94 120 101 86 71 NA 150 130 99 ...
## $ LPA : num 4.78 2.39 39.3 7.63 24.9 2.41 15.3 7.31 36.7 28.9 ...
## $ A1C : num 6.17 5.58 5.38 5.38 5.19 ...
## $ hba1 : num 7.9 7.2 7.1 6.6 6.3 6 8.1 7.7 6.8 7.3 ...
## $ CREATININA : num 0.9 1 1 0.9 0.8 0.9 1 1 1.2 1 ...
## $ GLUCB : num 101 103 103 109 107 103 104 101 115 101 ...
## $ SOG : num 122 100 90 96 69 117 166 94 162 143 ...
## $ Tol_Glucosa : chr "IFG" "IFG" "IFG" "IFG" ...
## $ DM : num 0 0 0 0 0 0 0 0 0 0 ...
## $ conocida : chr "Normal" "Normal" "Normal" "Normal" ...
## $ SM : num 1 0 1 1 1 0 0 1 1 1 ...
## $ PCR : num 0.34 0.32 0.58 0.32 0.32 0.34 0.34 0.34 0.34 0.49 ...
## $ INSULINEMIA : num 16.2 19.8 11.5 17.8 11.6 22.7 14.7 17.2 14.6 15.6 ...
## $ PAI_1 : num 47.8 57.2 38.5 32.4 32 71.7 46.3 56.8 71.1 31.6 ...
## $ fvw : num 115 17.8 91 96.1 75 117 111 75.4 150 126 ...
## $ fibri : num 2.4 2.89 2.71 2.45 3.78 3.53 3.85 3.18 3.2 2.64 ...
## $ HMC : num 14 40.72 15.34 15.33 8.64 ...
## $ HOMA : num 4.04 5.03 2.92 4.79 3.06 ...
## $ IR : num 1 1 1 1 1 1 1 1 1 1 ...
## $ ecnos : chr "ab" "bb" "bb" "bb" ...
## $ ppr : chr "pp" "pp" "pp" "pp" ...
## $ fibratos : chr "No" "No" "No" "No" ...
## $ CETP : chr NA NA NA "B1B1" ...
## $ PON_192 : chr "QR" "QQ" "QR" "RR" ...
Hay dos problemas muy frecuentes con los que se encuentra en usuario novel cuando lee archivos Excel con R:
Error: no se pudo encontrar la función "read.xlsx"
: esto significa que queremos ejecutar la función read.xlsx()
sin haber cargado aún el paquete openxlsx
. Lo único que hay que hacer es ejecutar primero library(openxlsx)
y volver a hacer telde = read.xlsx("endocrino.xlsx")
.
Error in library(openxlsx) : there is no package called ???openxlsx???
: esto significa que no tenemos el paquete openxlxs
instalado en nuestro ordenador. Lo único que habrá que hacer es instalarlo mediante install.packages("openxlsx")
, y a continuación volver a ejecutar library(openxlsx)
.
Si nos aparece el mensaje:
Error in setwd("ruta/directorio") : no es posible cambiar el directorio de trabajo
ello significa que el directorio o carpeta que hemos especificado no existe. En las aulas de informática de la ULPGC, cuando un archivo se descarga de internet lo hace automáticamente a la carpeta c:\Users\aulas\Downloads
. En ordenadores Mac, la carpeta de descargas suele ser /Users/nombreUsuario/Downloads
(nótese que en Mac no hay que especificar la unidad c:
al principio de la ruta).
Si desconocemos la ubicación de la carpeta, podemos ir a la pestaña “Files” en la ventana inferior derecha de Rstudio y navegar por las carpetas de nuestro ordenador hasta localizar el archivo. A continuación pinchamos en “More” en la misma ventana, y elegimos la opción “Set As Working Directory”; como resultado, R se situará en dicha carpeta y se mostrará su ruta en la consola de Rstudio.
Si nos limitamos a escribir:
read.xlsx("endocrino.xlsx")
el archivo se lee, y se muestra en pantalla, pero no se asigna a ningún data.frame
por lo que no se conserva en la memoria del ordenador y R no puede acceder a él.