Utilizando las funciones citadas en este Laboratorio, comprobad qué
paquetes tenéis
instalados en vuestra versión de RStudio e instalad el paquete MASS y el
paquete Survival y comprobad la información que contienen. Buscad
información sobre el paquete Rcmdr (R Commander) desde la consola.
text_r <- read.table("trial1.txt", sep="\n") # read.txt() #no existe
csv_file <- read.csv("personas.csv")
summary(csv_file$Altura)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.60 1.68 1.70 1.71 1.75 1.82
summary(csv_file$Peso)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 50 58 65 66 75 82
summary(csv_file$Edad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 22 25 28 28 30 35
fivenum(csv_file$Edad) #5 estadisticos basicos summary(csv_file\$Edad)
## [1] 22 25 28 30 35
A partir del conjunto de datos anorexia del paquete MASS, que corresponden a los datos de cambio de peso de pacientes jóvenes con anorexia, mostrad los tipos de datos que contiene y comprobad si existen valores NA y NULL. Para la variable Treat, transformad los valores «CBT», «Cont» y «FT» en «Cogn Beh Tr», «Contr» y «Fam Tr», respectivamente.
df <- MASS::anorexia
str(df)
## 'data.frame': 72 obs. of 3 variables:
## $ Treat : Factor w/ 3 levels "CBT","Cont","FT": 2 2 2 2 2 2 2 2 2 2 ...
## $ Prewt : num 80.7 89.4 91.8 74 78.1 88.3 87.3 75.1 80.6 78.4 ...
## $ Postwt: num 80.2 80.1 86.4 86.3 76.1 78.1 75.1 86.7 73.5 84.6 ...
summary(df)
## Treat Prewt Postwt
## CBT :29 Min. :70.00 Min. : 71.30
## Cont:26 1st Qu.:79.60 1st Qu.: 79.33
## FT :17 Median :82.30 Median : 84.05
## Mean :82.41 Mean : 85.17
## 3rd Qu.:86.00 3rd Qu.: 91.55
## Max. :94.90 Max. :103.60
table(is.na(df))
##
## FALSE
## 216
table(is.null(df))
##
## FALSE
## 1
#Cambiar el level
levels(df$Treat) <- c("Cogn Beh Tr","Contr","Fam Tr")
# Poner nombre a cada nivel
# df_new <- df
# df_new$Treat <- factor(df$Treat,levels=c("CBT","Cont","FT"),labels=c("Cogn Beh Tr","Contr","Fam Tr"))
df_biop <- MASS::biopsy
write.csv(df_biop, file="Data_biopsy.csv")
# library(MASS)
# data("biopsy")
df_melanoma <- MASS::Melanoma
write.csv(df_melanoma, file = "F:/Desktop/Agus/Master_biostat/2-SOFTW_AD/PAC1/melanoma.csv")
write.table(df_melanoma, file = "F:/Desktop/Agus/Master_biostat/2-SOFTW_AD/PAC1/datasets/melanoma.txt")
xlsx::write.xlsx(df_melanoma, file = "F:/Desktop/Agus/Master_biostat/2-SOFTW_AD/PAC1/datasets/melanoma.xlsx")
# library(dplyr)
# install.packages("officer")
sum_age <- summary(df_melanoma$age)
texto <- paste(capture.output(sum_age), collapse="\n") #convertir a texto para escribirlo
doc <- officer::read_docx()
officer::body_add_par(doc, texto)
## rdocx document with 2 element(s)
##
## * styles:
## Normal heading 1 heading 2
## "paragraph" "paragraph" "paragraph"
## heading 3 Default Paragraph Font Normal Table
## "paragraph" "character" "table"
## No List strong centered
## "numbering" "character" "paragraph"
## table_template Light List Accent 2 Titre 1 Car
## "table" "table" "character"
## Titre 2 Car Titre 3 Car Image Caption
## "character" "character" "paragraph"
## Table Caption Table Professional toc 1
## "paragraph" "table" "paragraph"
## toc 2 Balloon Text Texte de bulles Car
## "paragraph" "paragraph" "character"
## reference_id graphic title table title
## "character" "paragraph" "paragraph"
##
## * Content at cursor location:
## level num_id
## 1 NA NA
## text
## 1 Min. 1st Qu. Median Mean 3rd Qu. Max. \n 4.00 42.00 54.00 52.46 65.00 95.00
## style_name content_type
## 1 Normal paragraph
print(doc, target = "datasets/informe_age.docx")
En el siguiente ejemplo veremos cómo utilizar diferentes operadores
sobre el conjunto de datos birthwt, así como también algunas funciones
que nos permiten obtener más información de las variables:
a) ¿Cuál es la edad máxima de las madres del conjunto de datos?
b) ¿Cuál es la edad mínima de las madres del conjunto de datos?
c) ¿Cuál es el rango de edad de las madres? d) ¿Fumaba la madre cuyo
recién nacido era el de menor peso?
e) ¿Cuánto pesó el recién nacido cuya madre tenía la edad máxima? f)
Listad los pesos de los recién nacidos, cuyas madres visitarán menos de
dos veces al médico durante el primer trimestre.
df_bw <- MASS::birthwt
head(df_bw)
## low age lwt race smoke ptl ht ui ftv bwt
## 85 0 19 182 2 0 0 0 1 0 2523
## 86 0 33 155 3 0 0 0 0 3 2551
## 87 0 20 105 1 1 0 0 0 1 2557
## 88 0 21 108 1 1 0 0 1 2 2594
## 89 0 18 107 1 1 0 0 1 0 2600
## 91 0 21 124 3 0 0 0 0 0 2622
max(df_bw$age)
## [1] 45
min(df_bw$age)
## [1] 14
max(df_bw$age)-min(df_bw$age)
## [1] 31
min_w = min(df_bw$bwt)
df_bw[df_bw$bwt==min_w,"smoke"]
## [1] 1
df_bw[df_bw$age==max(df_bw$age),"bwt"]
## [1] 4990
help(birthwt)
## starting httpd help server ... done
df_bw[df_bw$ftv<2,"bwt"]
## [1] 2523 2557 2600 2622 2637 2637 2663 2665 2722 2733 2751 2769 2769 2778 2807
## [16] 2821 2836 2863 2877 2906 2920 2920 2920 2948 2948 2977 2977 2922 3033 3062
## [31] 3062 3062 3062 3090 3090 3100 3104 3132 3175 3175 3203 3203 3203 3225 3225
## [46] 3232 3234 3260 3274 3317 3317 3331 3374 3374 3402 3416 3444 3459 3460 3473
## [61] 3544 3487 3544 3572 3572 3586 3600 3614 3614 3629 3637 3643 3651 3651 3651
## [76] 3651 3699 3728 3756 3770 3770 3770 3790 3799 3827 3884 3912 3940 3941 3941
## [91] 3969 3997 3997 4054 4054 4111 4174 4238 4593 4990 709 1135 1330 1474 1588
## [106] 1588 1701 1729 1790 1818 1885 1893 1899 1928 1936 1970 2055 2055 2084 2084
## [121] 2100 2125 2187 2187 2211 2225 2240 2240 2282 2296 2296 2325 2353 2353 2367
## [136] 2381 2381 2381 2410 2410 2410 2424 2442 2466 2466 2495 2495
A partir del conjunto de datos anorexia trabajado en apartados anteriores, cread una matriz que tenga como columnas los valores de Prewt y Postwt, y cada fila sean los valores correspondientes para cada posición.
matr_anorexia<-matrix(c(df$Prewt,df$Postwt),ncol=2, dimnames = list(c(),c("Prewt", "Postwt")))
Copia el código siguiente en tu consola para generar un data frame con veinticinco registros y seis variables, y responde a los siguientes apartados:
Identificador <- c("I1","I2","I3","I4","I5","I6","I7","I8","I9","I10","I11","I12","I13","I14", "I15","I16","I17","I18","I19","I20","I21","I22","I23","I24","I25")
Edad <- c(23,24,21,22,23,25,26,24,21,22,23,25,26,24,22,21,25,26,24,21,25,27,26,22,29)
Sexo <-c(1,2,1,1,1,2,2,2,1,2,1,2,2,2,1,1,1,2,2,2,1,2,1,1,2) #1 para mujeres y 2 para hombres
Peso <- c(76.5,81.2,79.3,59.5,67.3,78.6,67.9,100.2,97.8,56.4,65.4,67.5,87.4,99.7,87.6, 93.4,65.4,73.7,85.1,61.2,54.8,103.4,65.8,71.7,85.0)
Alt <- c(165,154,178,165,164,175,182,165,178,165,158,183,184,164,189,167,182,179,165 ,158,183,184,189,166,175) #altura en cm
Fuma <- c("SI","NO","SI","SI","NO","NO","NO","SI","SI","SI","NO","NO","SI","SI","SI", "SI","NO","NO","SI","SI","SI","NO","SI","NO","SI")
Trat_Pulmon <- data.frame(Identificador,Edad,Sexo,Peso,Alt,Fuma)
head(Trat_Pulmon)
## Identificador Edad Sexo Peso Alt Fuma
## 1 I1 23 1 76.5 165 SI
## 2 I2 24 2 81.2 154 NO
## 3 I3 21 1 79.3 178 SI
## 4 I4 22 1 59.5 165 SI
## 5 I5 23 1 67.3 164 NO
## 6 I6 25 2 78.6 175 NO
Trat_Pulmon[Trat_Pulmon$Edad>22,]
## Identificador Edad Sexo Peso Alt Fuma
## 1 I1 23 1 76.5 165 SI
## 2 I2 24 2 81.2 154 NO
## 5 I5 23 1 67.3 164 NO
## 6 I6 25 2 78.6 175 NO
## 7 I7 26 2 67.9 182 NO
## 8 I8 24 2 100.2 165 SI
## 11 I11 23 1 65.4 158 NO
## 12 I12 25 2 67.5 183 NO
## 13 I13 26 2 87.4 184 SI
## 14 I14 24 2 99.7 164 SI
## 17 I17 25 1 65.4 182 NO
## 18 I18 26 2 73.7 179 NO
## 19 I19 24 2 85.1 165 SI
## 21 I21 25 1 54.8 183 SI
## 22 I22 27 2 103.4 184 NO
## 23 I23 26 1 65.8 189 SI
## 25 I25 29 2 85.0 175 SI
Trat_Pulmon[3,4]
## [1] 79.3
subset(Trat_Pulmon, Edad < 27, select=-Alt)
## Identificador Edad Sexo Peso Fuma
## 1 I1 23 1 76.5 SI
## 2 I2 24 2 81.2 NO
## 3 I3 21 1 79.3 SI
## 4 I4 22 1 59.5 SI
## 5 I5 23 1 67.3 NO
## 6 I6 25 2 78.6 NO
## 7 I7 26 2 67.9 NO
## 8 I8 24 2 100.2 SI
## 9 I9 21 1 97.8 SI
## 10 I10 22 2 56.4 SI
## 11 I11 23 1 65.4 NO
## 12 I12 25 2 67.5 NO
## 13 I13 26 2 87.4 SI
## 14 I14 24 2 99.7 SI
## 15 I15 22 1 87.6 SI
## 16 I16 21 1 93.4 SI
## 17 I17 25 1 65.4 NO
## 18 I18 26 2 73.7 NO
## 19 I19 24 2 85.1 SI
## 20 I20 21 2 61.2 SI
## 21 I21 25 1 54.8 SI
## 23 I23 26 1 65.8 SI
## 24 I24 22 1 71.7 NO
Incorporad el dataset ChickWeight que contiene información sobre el peso de 578 pollitos en gramos (weight), el tiempo desde la medición al nacer (Time), una variable identificadora de cada pollito (Chick) a partir del rango de peso y una variable factor con el tipo de dieta experimental que cada pollito recibió (Diet). a) Incorporad el conjunto de datos ChickWeight del paquete datasets a vuestro entorno de trabajo. b) Generad un gráfico de dispersión de la variable weight. c) Cread un diagrama de caja con la variable Time.
df_chick <- datasets::ChickWeight
plot(df_chick$weight, main="Grafico pesos") #Grafica de dispersion
boxplot(df_chick$Time, main="BoxPlot time")
A partir del conjunto de datos anorexia del paquete MASS, cread otro data frame que se llame anorexia_treat_df formado por Treat y por un vector nuevo calculado a partir de la diferencia Prewt-Postwt. De esta manera, nos quedará un data frame que contenga el tipo de tratamiento y el valor del peso ganado o perdido después de haber realizado el tratamiento. Seleccionad aquellos individuos que han ganado peso después del tratamiento y cread un nuevo conjunto llamado anorexia_treat_C_df que contenga solo los datos de aquellos que han seguido el tratamiento «Cont» y que han ganado peso después del tratamiento.
anorexia_treat_df <- data.frame(Treat = df$Treat, Diff = df$Prewt - df$Postwt )
anorexia_treat_C_df <- anorexia_treat_df[anorexia_treat_df$Diff < 0 & anorexia_treat_df$Treat == "Contr" ,]
El ejercicio es publicar este .Rmd en mi pagina Rpubs (https://rpubs.com/agiuliodori)
Resolved los siguientes apartados:
a) Cread un conjunto de datos inventado con R. Debe contener treinta
observaciones
(quince para hombres y quince para mujeres) para seis variables con las
características definidas en el enunciado (Id, Edad, Gene, Trat, Peso,
Alt). b) Buscad información de vuestro conjunto de datos y de vuestras
variables.
c) Cread una nueva variable a partir de alguna de las que tengamos. Por
ejemplo, podéis calcular el IMC (IMC = peso (kg)/ [estatura (m)]2 e
incluid la nueva variable en el conjunto de datos.
d) Cread dos data frames diferenciados para hombres y mujeres con dos
nombres diferentes: Df_Hombres y Df_Mujeres. e) Combinad de nuevo los
dos ficheros anteriores y cread el primero de nuevo con el
comando rbind().
Id <- as.character(1:30)
Gene <- c(rep("F",15), rep("M",15))
Trat <- sample(c("A", "B", "C"), 30, replace = TRUE)
Edad <- sample(20:45, 30, replace=TRUE)
Peso<- c(rnorm(15, mean = 65, sd = 8), rnorm(15, mean = 75, sd = 10))
Alt<- c(rnorm(15, mean = 165, sd = 10),rnorm(15, mean = 175, sd = 12))
data_set <- data.frame(Id, Edad, Gene, Trat, Peso, Alt)
str(data_set)
## 'data.frame': 30 obs. of 6 variables:
## $ Id : chr "1" "2" "3" "4" ...
## $ Edad: int 33 34 43 37 26 21 22 41 27 44 ...
## $ Gene: chr "F" "F" "F" "F" ...
## $ Trat: chr "C" "B" "A" "A" ...
## $ Peso: num 72.6 67.7 71.3 63.1 59.6 ...
## $ Alt : num 167 144 170 168 143 ...
summary(data_set$Peso)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 51.57 64.91 69.16 70.15 75.39 90.59
summary(data_set$Alt)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 141.0 161.0 169.0 169.0 182.6 196.0
summary(data_set$Edad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 20.00 25.25 34.00 32.47 39.75 45.00
data_set$IMC <- data_set$Peso / (data_set$Alt/100)**2
summary(data_set$IMC)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 15.23 21.40 25.17 25.09 28.30 34.93
df_hombres <- data_set[data_set$Gene == "M",]
df_mujeres <- data_set[data_set$Gene == "F",]
df_all <- rbind(df_mujeres, df_hombres)