#Ejercicio 1
A partir de los datos siguientes de los pacientes de un hospital, cread
un data frame con los datos de los pacientes anteriores y: 1. Filtrad
los pacientes con niveles de colesterol por encima de 200. 2. Calculad
las estadísticas descriptivas de los niveles de colesterol de los
pacientes.
#Vectores con los datos
nombre<-c("Paciente1", "Paciente2", "Paciente3", "Paciente4", "Paciente5")
edad<-c(45, 32, 28, 55, 40)
genero<-c("Femenino", "Masculino", "Femenino", "Masculino", "Femenino")
presion<-c("120/80", "130/85", "110/70", "140/90", "125/75")
colesterol<-c(180, 200, 150, 220, 190)
#Crear dataframe
datos <- data.frame(
Nombre = nombre,
Edad = edad,
Género = genero,
"Presión arterial" = presion,
Colesterol = colesterol
)
print(datos)
## Nombre Edad Género Presión.arterial Colesterol
## 1 Paciente1 45 Femenino 120/80 180
## 2 Paciente2 32 Masculino 130/85 200
## 3 Paciente3 28 Femenino 110/70 150
## 4 Paciente4 55 Masculino 140/90 220
## 5 Paciente5 40 Femenino 125/75 190
#Generar un subset e imprimir
pacientes200<-subset(datos, colesterol > 200)
print(pacientes200)
## Nombre Edad Género Presión.arterial Colesterol
## 4 Paciente4 55 Masculino 140/90 220
#Resumen estadístico
summary(colesterol)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 150 180 190 188 200 220
#Ejercicio 2
El porcentaje de grasa corporal óptima de un individuo depende de la
edad y del género. Por ello, en general: Porcentaje masa corporal.
Edad (años) Mujer (%) Hombre (%) 10-30 20-26 12-18 31-40 21-27 13-19
41-50 22-28 14- 20 51-60 22-30 16-20 61 o más 22-31 17-21 Nota.- Estos
valores pueden variar ligeramente según el origen de la publicación.
(Fuente: http://nutricionymultinivel.blogspot.com/p/tablas-de-valores-de-la-organizacion.html).
Definid variables que representen la edad y el género de un individuo y,
en función del valor que les asignéis, mostrad el porcentaje de masa
corporal óptima que les correspondería con base en la tabla
anterior.
#Valores
sexo="Hombre"
edad=24
#Condicionales
if(sexo=="Mujer") {
if(edad<10)
mc_opt<-"No registrado"
else
if(edad>=10|edad<=30)
mc_opt<-"20-26"
else
if(edad>=31|edad<=40)
mc_opt<-"21-27"
else
if(edad>=41|edad<=50)
mc_opt<-"22-28"
else
if(edad>=51|edad<=60)
mc_opt<-"22-30"
else
if(edad>=61)
mc_opt<-"22-31"
} else {
if(edad<10)
mc_opt<-"No registrado"
else
if(edad>=10|edad<=30)
mc_opt<-"12-18"
else
if(edad>=31|edad<=40)
mc_opt<-"13-19"
else
if(edad>=41|edad<=50)
mc_opt<-"14-20"
else
if(edad>=51|edad<=60)
mc_opt<-"16-20"
else
if(edad>=61)
mc_opt<-"17-21"
}
print(mc_opt)
## [1] "12-18"
#Ejercicio 3
A partir del conjunto de datos anorexia del paquete MASS, calculad el
porcentaje de pacientes que han realizado cada tipo de
tratamiento.
library(MASS)
#Importar datos
data<-anorexia
#Generar contadores a 0
cbt_c<-0
cont_c<-0
ft_c<-0
#Bucle que vaya 1 por 1 contando cada categoría
for(i in data$Treat) {
if(i=="CBT") {
cbt_c<-cbt_c+1
} else if (i=="Cont") {
cont_c<-cont_c+1
} else if (i=="FT")
ft_c<-ft_c+1
}
#Suma de dinvidiuos
suma<-cbt_c+cont_c+ft_c
#Valores en %
p_cbt_c<-100*(cbt_c/suma)
p_cont_c<-100*(cont_c/suma)
p_ft_c<-100*(ft_c/suma)
cat("CBT:", p_cbt_c,"%, Cont: ",p_cont_c,"%, FT :",p_ft_c, "%")
## CBT: 40.27778 %, Cont: 36.11111 %, FT : 23.61111 %
#Ejercicio 4
A partir del conjunto de datos birthwt del paquete MASS, calculad
cuántos recién nacidos con un peso inferior a 2.600 gramos corresponden
a madres menores de veinte años y fumadoras.
data2<-birthwt
#Vectores con solo bwt
bwt<-c(data2$bwt)
#Contador a 0
n_madres<-0
#Bucle con condiciones
for(i in 1:length(bwt))
if(data2$bwt[i]<2600)
if(data2$age[i]<20)
if(data2$smoke[i]==1)
n_madres<-n_madres+1
n_madres
## [1] 7
#Ejercicio 5
Supongamos que queremos generar un registro médico de pacientes que
incluya información como nombre, edad, diagnóstico y niveles de glucosa
en sangre, con los siguientes datos de pacientes.
Definid una función llamada crear_registro_médico que tome los cuatro
vectores anteriores como argumentos (nombres, edades, diagnósticos y
glucosa) y cree un data frame que representa un registro médico de
pacientes. Finalmente, el resultado por pantalla deberá ser un data
frame que contiene información detallada sobre cada paciente, incluyendo
su nombre, edad, diagnóstico y niveles de glucosa en sangre.
#Vectores con datos
nombres <- c("Ana", "Luis", "María", "Carlos", "Elena")
edades <- c(45, 32, 28, 55, 40)
diagnósticos <- c("Diabetes", "Hipertensión", "Sano", "Hipertensión", "Asma")
glucosa<- c(125, 140, 95, 160, 110)
#Crear dataframe
crear_registro_médico<-data.frame(
Nombre=nombres,
Edad=edades,
Diagnóstico=diagnósticos,
Glucosa=glucosa
)
print(crear_registro_médico)
## Nombre Edad Diagnóstico Glucosa
## 1 Ana 45 Diabetes 125
## 2 Luis 32 Hipertensión 140
## 3 María 28 Sano 95
## 4 Carlos 55 Hipertensión 160
## 5 Elena 40 Asma 110
#Ejercicio 6
A partir del conjunto de datos birthwt del paquete MASS, guardad en un
vector los pesos de los recién nacidos cuyas madres tengan menos de 20
años. Calculad la media y representad gráficamente este vector (por
ejemplo, un diagrama de puntos).
#subset, media y gráfico
data21<-subset(data2, age<20)
mean(data21$bwt)
## [1] 2973.529
plot(data21$age, data21$bwt)
#Ejercicio 7
A partir de los ejemplos trabajados de definición de funciones, definid
dos funciones, una que calcule el IMC de un individuo y otra que calcule
el porcentaje de peso corporal óptimo en función de la edad y el género.
En ambas funciones, es necesario definir los parámetros que
correspondan.
#Función IMC
calcular_imc<-function(peso, altura) {
imc=peso/(altura**2)
return(imc)
}
peso=65
altura=1.7
mi_imc<-calcular_imc(peso, altura)
mi_imc
## [1] 22.49135
#Función grasa corporal usando clasificador del ejercicio 2
grasa_corporal_optima<-function(edad, genero)
if(genero=="Mujer") {
if(edad<10)
mc_opt<-"No registrado"
else
if(edad>=10|edad<=30)
mc_opt<-"20-26"
else
if(edad>=31|edad<=40)
mc_opt<-"21-27"
else
if(edad>=41|edad<=50)
mc_opt<-"22-28"
else
if(edad>=51|edad<=60)
mc_opt<-"22-30"
else
if(edad>=61)
mc_opt<-"22-31"
} else {
if(edad<10)
mc_opt<-"No registrado"
else
if(edad>=10|edad<=30)
mc_opt<-"12-18"
else
if(edad>=31|edad<=40)
mc_opt<-"13-19"
else
if(edad>=41|edad<=50)
mc_opt<-"14-20"
else
if(edad>=51|edad<=60)
mc_opt<-"16-20"
else
if(edad>=61)
mc_opt<-"17-21"
}
edad=25
genero="Hombre"
peso_id<-grasa_corporal_optima(edad, genero)
peso_id
## [1] "12-18"
#Ejercicio 8
Si consideramos el conjunto de datos birthwt del paquete MASS, cread una
función que muestre los valores de peso de los recién nacidos cuyas
madres sean de raza blanca y cuyo peso esté por debajo de la media de
los pesos observados.
#usando vectores generados en el ejercicio 4
data2<-birthwt
#Vectores con solo bwt
bwt<-c(data2$bwt)
#Bucle con condiciones
for(i in 1:length(bwt))
if(data2$race[i]==1)
if(data2$bwt[i]<mean(data2$bwt))
print(data2$bwt[i])
## [1] 2557
## [1] 2594
## [1] 2600
## [1] 2637
## [1] 2663
## [1] 2665
## [1] 2769
## [1] 2769
## [1] 2782
## [1] 2821
## [1] 2835
## [1] 2836
## [1] 2877
## [1] 2906
## [1] 2920
## [1] 2922
## [1] 1021
## [1] 1790
## [1] 1818
## [1] 1885
## [1] 1928
## [1] 1928
## [1] 1936
## [1] 2082
## [1] 2084
## [1] 2084
## [1] 2100
## [1] 2187
## [1] 2225
## [1] 2296
## [1] 2353
## [1] 2353
## [1] 2410
## [1] 2410
## [1] 2414
## [1] 2424
## [1] 2466
## [1] 2466
## [1] 2495
#Ejercicio 9
A partir del conjunto de datos Melanoma del paquete MASS que hace
referencia a los datos de supervivencia de melanoma maligno, se pide
resolver las siguientes cuestiones:
a) Definid un vector que guarde las edades de los individuos observados
y calculad la media, el máximo y el mínimo de esta distribución.
b) Definid una función que recorra el conjunto de datos y muestre
cuántos de los individuos observados murieron a causa del melanoma,
cuántos sobrevivieron y cuántos murieron por diferentes causas.
c) Definid una función que recorra el conjunto de datos y muestre la
proporción de hombres y de mujeres que murieron por melanoma.
melanoma<-Melanoma
#Apartado a
melanoma_edad<-c(melanoma$age)
mean(melanoma_edad)
## [1] 52.46341
max(melanoma_edad)
## [1] 95
min(melanoma_edad)
## [1] 4
#Apartado b
estado_actual<-function() {
muerto_melanoma<-0
vivos<-0
muerto_otra_causa<-0
estado<-melanoma$status
for(i in 1:length(melanoma$status))
if(estado[i]==1)
muerto_melanoma<-muerto_melanoma+1
else if (estado[i]==2)
vivos<-vivos+1
else if (estado[i]==3)
muerto_otra_causa<-muerto_otra_causa+1
return(c(muerto_melanoma,vivos,muerto_otra_causa))
}
print(estado_actual())
## [1] 57 134 14
#Apartado c
melanoma_sexo<-function() {
hombres_m<-0
mujeres_m<-0
m_melanoma<-subset(melanoma, status==1)
sexo<-m_melanoma$sex
for(i in 1:length(sexo))
if(sexo[i]==0)
mujeres_m<-mujeres_m+1
else if (sexo[i]==1)
hombres_m<-hombres_m+1
muertes_m <- nrow(m_melanoma)
prop_h<-hombres_m/muertes_m
prop_m<-mujeres_m/muertes_m
return(c(prop_h,prop_m))
}
print(melanoma_sexo())
## [1] 0.5087719 0.4912281
#Ejercicio 10
A partir del conjunto de datos anterior airquality trabajado
anteriormente, resolved las siguientes consultas: 1) Mostrad la media
del factor Ozone. 2) Mostrad los datos de Ozone, Solar.R y Wind de los
meses (Month) 5, 6 y 7. 3) Mostrad la información anterior ordenada por
Month. 4) Mostrad los datos de Wind agrupados por Month. Nota: Utilizad
la sintaxis adecuada para mostrar por pantalla solamente los cinco
primeros registros.
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
library(RSQLite)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
db<-"RSQLite"::datasetsDb()
dbReadTable(db, "airquality")
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 10 NA 194 8.6 69 5 10
## 11 7 NA 6.9 74 5 11
## 12 16 256 9.7 69 5 12
## 13 11 290 9.2 66 5 13
## 14 14 274 10.9 68 5 14
## 15 18 65 13.2 58 5 15
## 16 14 334 11.5 64 5 16
## 17 34 307 12.0 66 5 17
## 18 6 78 18.4 57 5 18
## 19 30 322 11.5 68 5 19
## 20 11 44 9.7 62 5 20
## 21 1 8 9.7 59 5 21
## 22 11 320 16.6 73 5 22
## 23 4 25 9.7 61 5 23
## 24 32 92 12.0 61 5 24
## 25 NA 66 16.6 57 5 25
## 26 NA 266 14.9 58 5 26
## 27 NA NA 8.0 57 5 27
## 28 23 13 12.0 67 5 28
## 29 45 252 14.9 81 5 29
## 30 115 223 5.7 79 5 30
## 31 37 279 7.4 76 5 31
## 32 NA 286 8.6 78 6 1
## 33 NA 287 9.7 74 6 2
## 34 NA 242 16.1 67 6 3
## 35 NA 186 9.2 84 6 4
## 36 NA 220 8.6 85 6 5
## 37 NA 264 14.3 79 6 6
## 38 29 127 9.7 82 6 7
## 39 NA 273 6.9 87 6 8
## 40 71 291 13.8 90 6 9
## 41 39 323 11.5 87 6 10
## 42 NA 259 10.9 93 6 11
## 43 NA 250 9.2 92 6 12
## 44 23 148 8.0 82 6 13
## 45 NA 332 13.8 80 6 14
## 46 NA 322 11.5 79 6 15
## 47 21 191 14.9 77 6 16
## 48 37 284 20.7 72 6 17
## 49 20 37 9.2 65 6 18
## 50 12 120 11.5 73 6 19
## 51 13 137 10.3 76 6 20
## 52 NA 150 6.3 77 6 21
## 53 NA 59 1.7 76 6 22
## 54 NA 91 4.6 76 6 23
## 55 NA 250 6.3 76 6 24
## 56 NA 135 8.0 75 6 25
## 57 NA 127 8.0 78 6 26
## 58 NA 47 10.3 73 6 27
## 59 NA 98 11.5 80 6 28
## 60 NA 31 14.9 77 6 29
## 61 NA 138 8.0 83 6 30
## 62 135 269 4.1 84 7 1
## 63 49 248 9.2 85 7 2
## 64 32 236 9.2 81 7 3
## 65 NA 101 10.9 84 7 4
## 66 64 175 4.6 83 7 5
## 67 40 314 10.9 83 7 6
## 68 77 276 5.1 88 7 7
## 69 97 267 6.3 92 7 8
## 70 97 272 5.7 92 7 9
## 71 85 175 7.4 89 7 10
## 72 NA 139 8.6 82 7 11
## 73 10 264 14.3 73 7 12
## 74 27 175 14.9 81 7 13
## 75 NA 291 14.9 91 7 14
## 76 7 48 14.3 80 7 15
## 77 48 260 6.9 81 7 16
## 78 35 274 10.3 82 7 17
## 79 61 285 6.3 84 7 18
## 80 79 187 5.1 87 7 19
## 81 63 220 11.5 85 7 20
## 82 16 7 6.9 74 7 21
## 83 NA 258 9.7 81 7 22
## 84 NA 295 11.5 82 7 23
## 85 80 294 8.6 86 7 24
## 86 108 223 8.0 85 7 25
## 87 20 81 8.6 82 7 26
## 88 52 82 12.0 86 7 27
## 89 82 213 7.4 88 7 28
## 90 50 275 7.4 86 7 29
## 91 64 253 7.4 83 7 30
## 92 59 254 9.2 81 7 31
## 93 39 83 6.9 81 8 1
## 94 9 24 13.8 81 8 2
## 95 16 77 7.4 82 8 3
## 96 78 NA 6.9 86 8 4
## 97 35 NA 7.4 85 8 5
## 98 66 NA 4.6 87 8 6
## 99 122 255 4.0 89 8 7
## 100 89 229 10.3 90 8 8
## 101 110 207 8.0 90 8 9
## 102 NA 222 8.6 92 8 10
## 103 NA 137 11.5 86 8 11
## 104 44 192 11.5 86 8 12
## 105 28 273 11.5 82 8 13
## 106 65 157 9.7 80 8 14
## 107 NA 64 11.5 79 8 15
## 108 22 71 10.3 77 8 16
## 109 59 51 6.3 79 8 17
## 110 23 115 7.4 76 8 18
## 111 31 244 10.9 78 8 19
## 112 44 190 10.3 78 8 20
## 113 21 259 15.5 77 8 21
## 114 9 36 14.3 72 8 22
## 115 NA 255 12.6 75 8 23
## 116 45 212 9.7 79 8 24
## 117 168 238 3.4 81 8 25
## 118 73 215 8.0 86 8 26
## 119 NA 153 5.7 88 8 27
## 120 76 203 9.7 97 8 28
## 121 118 225 2.3 94 8 29
## 122 84 237 6.3 96 8 30
## 123 85 188 6.3 94 8 31
## 124 96 167 6.9 91 9 1
## 125 78 197 5.1 92 9 2
## 126 73 183 2.8 93 9 3
## 127 91 189 4.6 93 9 4
## 128 47 95 7.4 87 9 5
## 129 32 92 15.5 84 9 6
## 130 20 252 10.9 80 9 7
## 131 23 220 10.3 78 9 8
## 132 21 230 10.9 75 9 9
## 133 24 259 9.7 73 9 10
## 134 44 236 14.9 81 9 11
## 135 21 259 15.5 76 9 12
## 136 28 238 6.3 77 9 13
## 137 9 24 10.9 71 9 14
## 138 13 112 11.5 71 9 15
## 139 46 237 6.9 78 9 16
## 140 18 224 13.8 67 9 17
## 141 13 27 10.3 76 9 18
## 142 24 238 10.3 68 9 19
## 143 16 201 8.0 82 9 20
## 144 13 238 12.6 64 9 21
## 145 23 14 9.2 71 9 22
## 146 36 139 10.3 81 9 23
## 147 7 49 10.3 69 9 24
## 148 14 20 16.6 63 9 25
## 149 30 193 6.9 70 9 26
## 150 NA 145 13.2 77 9 27
## 151 14 191 14.3 75 9 28
## 152 18 131 8.0 76 9 29
## 153 20 223 11.5 68 9 30
colnames(airquality)
## [1] "Ozone" "Solar.R" "Wind" "Temp" "Month" "Day"
#Apartado 1)
sqldf("SELECT AVG(Ozone) FROM airquality")
## AVG(Ozone)
## 1 42.12931
#Apartado 2
sqldf("SELECT Ozone, [Solar.R], Wind FROM airquality where Month in (5,6,7)")
## Ozone Solar.R Wind
## 1 41 190 7.4
## 2 36 118 8.0
## 3 12 149 12.6
## 4 18 313 11.5
## 5 NA NA 14.3
## 6 28 NA 14.9
## 7 23 299 8.6
## 8 19 99 13.8
## 9 8 19 20.1
## 10 NA 194 8.6
## 11 7 NA 6.9
## 12 16 256 9.7
## 13 11 290 9.2
## 14 14 274 10.9
## 15 18 65 13.2
## 16 14 334 11.5
## 17 34 307 12.0
## 18 6 78 18.4
## 19 30 322 11.5
## 20 11 44 9.7
## 21 1 8 9.7
## 22 11 320 16.6
## 23 4 25 9.7
## 24 32 92 12.0
## 25 NA 66 16.6
## 26 NA 266 14.9
## 27 NA NA 8.0
## 28 23 13 12.0
## 29 45 252 14.9
## 30 115 223 5.7
## 31 37 279 7.4
## 32 NA 286 8.6
## 33 NA 287 9.7
## 34 NA 242 16.1
## 35 NA 186 9.2
## 36 NA 220 8.6
## 37 NA 264 14.3
## 38 29 127 9.7
## 39 NA 273 6.9
## 40 71 291 13.8
## 41 39 323 11.5
## 42 NA 259 10.9
## 43 NA 250 9.2
## 44 23 148 8.0
## 45 NA 332 13.8
## 46 NA 322 11.5
## 47 21 191 14.9
## 48 37 284 20.7
## 49 20 37 9.2
## 50 12 120 11.5
## 51 13 137 10.3
## 52 NA 150 6.3
## 53 NA 59 1.7
## 54 NA 91 4.6
## 55 NA 250 6.3
## 56 NA 135 8.0
## 57 NA 127 8.0
## 58 NA 47 10.3
## 59 NA 98 11.5
## 60 NA 31 14.9
## 61 NA 138 8.0
## 62 135 269 4.1
## 63 49 248 9.2
## 64 32 236 9.2
## 65 NA 101 10.9
## 66 64 175 4.6
## 67 40 314 10.9
## 68 77 276 5.1
## 69 97 267 6.3
## 70 97 272 5.7
## 71 85 175 7.4
## 72 NA 139 8.6
## 73 10 264 14.3
## 74 27 175 14.9
## 75 NA 291 14.9
## 76 7 48 14.3
## 77 48 260 6.9
## 78 35 274 10.3
## 79 61 285 6.3
## 80 79 187 5.1
## 81 63 220 11.5
## 82 16 7 6.9
## 83 NA 258 9.7
## 84 NA 295 11.5
## 85 80 294 8.6
## 86 108 223 8.0
## 87 20 81 8.6
## 88 52 82 12.0
## 89 82 213 7.4
## 90 50 275 7.4
## 91 64 253 7.4
## 92 59 254 9.2
#Apartado 3
sqldf("SELECT Ozone, [Solar.R], Wind FROM airquality where Month in (5,6,7) ORDER BY Month")
## Ozone Solar.R Wind
## 1 41 190 7.4
## 2 36 118 8.0
## 3 12 149 12.6
## 4 18 313 11.5
## 5 NA NA 14.3
## 6 28 NA 14.9
## 7 23 299 8.6
## 8 19 99 13.8
## 9 8 19 20.1
## 10 NA 194 8.6
## 11 7 NA 6.9
## 12 16 256 9.7
## 13 11 290 9.2
## 14 14 274 10.9
## 15 18 65 13.2
## 16 14 334 11.5
## 17 34 307 12.0
## 18 6 78 18.4
## 19 30 322 11.5
## 20 11 44 9.7
## 21 1 8 9.7
## 22 11 320 16.6
## 23 4 25 9.7
## 24 32 92 12.0
## 25 NA 66 16.6
## 26 NA 266 14.9
## 27 NA NA 8.0
## 28 23 13 12.0
## 29 45 252 14.9
## 30 115 223 5.7
## 31 37 279 7.4
## 32 NA 286 8.6
## 33 NA 287 9.7
## 34 NA 242 16.1
## 35 NA 186 9.2
## 36 NA 220 8.6
## 37 NA 264 14.3
## 38 29 127 9.7
## 39 NA 273 6.9
## 40 71 291 13.8
## 41 39 323 11.5
## 42 NA 259 10.9
## 43 NA 250 9.2
## 44 23 148 8.0
## 45 NA 332 13.8
## 46 NA 322 11.5
## 47 21 191 14.9
## 48 37 284 20.7
## 49 20 37 9.2
## 50 12 120 11.5
## 51 13 137 10.3
## 52 NA 150 6.3
## 53 NA 59 1.7
## 54 NA 91 4.6
## 55 NA 250 6.3
## 56 NA 135 8.0
## 57 NA 127 8.0
## 58 NA 47 10.3
## 59 NA 98 11.5
## 60 NA 31 14.9
## 61 NA 138 8.0
## 62 135 269 4.1
## 63 49 248 9.2
## 64 32 236 9.2
## 65 NA 101 10.9
## 66 64 175 4.6
## 67 40 314 10.9
## 68 77 276 5.1
## 69 97 267 6.3
## 70 97 272 5.7
## 71 85 175 7.4
## 72 NA 139 8.6
## 73 10 264 14.3
## 74 27 175 14.9
## 75 NA 291 14.9
## 76 7 48 14.3
## 77 48 260 6.9
## 78 35 274 10.3
## 79 61 285 6.3
## 80 79 187 5.1
## 81 63 220 11.5
## 82 16 7 6.9
## 83 NA 258 9.7
## 84 NA 295 11.5
## 85 80 294 8.6
## 86 108 223 8.0
## 87 20 81 8.6
## 88 52 82 12.0
## 89 82 213 7.4
## 90 50 275 7.4
## 91 64 253 7.4
## 92 59 254 9.2
#Apartado 4
sqldf("SELECT Month, SUM(Wind) AS Total_Wind FROM airquality GROUP BY Month LIMIT 5")
## Month Total_Wind
## 1 5 360.3
## 2 6 308.0
## 3 7 277.2
## 4 8 272.6
## 5 9 305.4
dbDisconnect(db)