Primero debemos preparar los archivos de ejemplo:

# definir directorio a donde guardar los archivos
directorio <- "DIRECCION_DONDE_DESEA_GUARDAR_LOS ARCHIVOS_DE_EJEMPLO"

# guardar archivos
download.file(url = "https://github.com/maRce10/ucr_r_avanzado/raw/master/additional_files/datos_camara_submarina.zip",
    destfile = file.path(directorio, "datos_camara_submarina.zip"))

# extraerlos del zip
unzip(zipfile = file.path(directorio, "datos_camara_submarina.zip"),
    exdir = directorio)

# hacer vector con nombre y direccion de archivos
archivos_txt <- list.files(path = directorio, full.names = TRUE, pattern = "TXT$")

 

También pueden bajar el archivo directamente de este enlance. Recuerde extraer los archivos y hacer el vector con los nombres de los archivos (correr líneas de la 9 a la 13).

Si todo salió bien el vector “archivos_txt” debería tener 19 elementos:

length(archivos_txt)
## [1] 19

 

  1. Haga un bucle for que devuelva el número de especies para cada archivo (y si, es lo mismo que hicimos en clase)
resultados <- vector()  # vector vacio

for (i in archivos_txt) {
    # inicio del bucle

    txt <- read.table(i, header = TRUE, skip = 4, sep = "\t")  # leer archivo
    nrw <- nrow(txt)  # calcular numero de filas

    resultados <- append(resultados, nrw)  # guardar resultados en vector vacio
}

resultados
##  [1] 39  1  2 12 14  9 12  8 32 36 21 12 22 27 29 19  8
## [18] 12 26

 

  1. Haga un bucle for que devuelva el número de familias para cada archivo
resultados_fam <- vector()  # vector vacio

for (i in archivos_txt) {
    # inicio del bucle

    txt <- read.table(i, header = TRUE, skip = 4, sep = "\t")  # leer archivo
    nfam <- length(unique(txt$Family))  # calcular numero de familias

    resultados_fam <- append(resultados_fam, nfam)  # guardar resultados en vector vacio
}

 

  1. Cree un cuadro de datos (data frame) que contenga tres columnas, una para el nombre del archivo, otra para el número de especies y otra para el número de familias
n_filas_df <- data.frame(archivo = basename(archivos_txt), especies = resultados,
    familias = resultados_fam)

n_filas_df
archivo especies familias
2022-09-02_R3-LcamT3-RcamN4_Pel1_2021-09-24_MaxN.TXT 39 19
2022-09-03_S6-LB13-RB12_PuntaMariaOeste_2022-03-24_MaxN.TXT 1 1
2022-09-03_T4-LB19-RB18_PuntaMariaOeste_2022-03-24_MaxN.TXT 2 2
2022-09-04_S1-LB10-RN9_Arco2_2022-07-15_MaxN.TXT 12 8
2022-09-07_P1-LB12-RB13_Gissler_2022-03-30_MaxN.TXT 14 7
2022-09-11_P1-LB14-RB13_Risco_2022-03-26_MaxN.TXT 9 5
2022-09-12_S6-LN4-RN8_Chatham_2022-03-28_MaxN.TXT 12 5
2022-09-14_R2C4_Catalinas1_21-7-2021_MaxN.TXT 8 5
2022-09-14_S2C4_Virador1-20-7-2021_MaxN.TXT 32 20
2022-09-14_S6-LB7-RB8_Silverado_2022-03-28_MaxN.TXT 36 16
2022-09-15_S6-LB9-RB11_Vikinga_2022-03-30_MaxN.TXT 21 14
2022-09-15_T4-LcamT8-RcamOFI-5_Barlovento2_2021-10-17_MaxN.TXT 12 7
2022-09-16_S2C8_Bajo Rojo1_2021-07-28_MaxN.TXT 22 18
2022-09-16_T4-LcamN5-RcamT6_ISJ2_2021-09-25_MaxN.TXT 27 19
2022-09-17_SB3-LcamT4-RcamN6_CanalSJ_2021-09-25_MaxN.TXT 29 15
2022-09-20_T3C7_Dampier2_2021-10-19_MaxN.TXT 19 9
2022-09-22_T4-LN9-RT1_Bautista_2022-03-26_MaxN.TXT 8 5
2022-09-24_T4-LcamT3-RcamSN7_Esfinge2_2021-10-17_MaxN.TXT 12 6
2022-09-25_T3C2_SJ2_2021-09-25_MaxN.TXT 26 18

 

  1. Añada una columna al cuadro de datos creado en el ejercicio anterior indicando la fecha de creación del video (esta información se encuentra en la columna ‘Date’ de cada archivo de texto). Note que cada archivo contiene solamente una fecha. Debe usar un bucle for para extraer esta información de los archivos.
resultados <- vector()  # vector vacio

for (i in archivos_txt) {
    # inicio del bucle

    txt <- read.table(i, header = TRUE, skip = 4, sep = "\t")  # leer archivo
    fecha <- txt$Date[1]  # calcular numero de familias

    resultados <- append(resultados, fecha)  # guardar resultados en vector vacio
}

n_filas_df$fecha <- resultados

 

  1. Añada una columna al cuadro de datos creado en el ejercicio 3 (y modificado en 4) indicando la profundidad a la que se grabó el video. Debe usar un bucle for para extraer esta información de los archivos.
resultados <- vector()  # vector vacio

for (i in archivos_txt) {
    # inicio del bucle

    txt <- read.table(i, header = TRUE, skip = 4, sep = "\t")  # leer archivo
    prof <- txt$Depth[1]  # calcular numero de familias

    resultados <- append(resultados, prof)  # guardar resultados en vector vacio
}

resultados <- gsub(" m", "", resultados)
resultados <- gsub("\\,", ".", resultados)
n_filas_df$profundidad <- as.numeric(resultados)

 

Note que la columna de profundidad no es numérica. Puede usar el siguiente código para convertir profundidad a un vector numérico (se necesita para el siguiente punto):

n_filas_df$profundidad <- as.numeric(gsub(" m", "", gsub("\\,", ".",
    n_filas_df$profundidad)))

 

  1. Calcule es la correlación entre el número de especies observadas y la profundidad (pista: cor.test())
# correlacion
cor.test(n_filas_df$especies, n_filas_df$profundidad)
## 
##  Pearson's product-moment correlation
## 
## data:  n_filas_df$especies and n_filas_df$profundidad
## t = -0.5, df = 17, p-value = 0.6
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.546  0.352
## sample estimates:
##    cor 
## -0.122

 

  1. Calcule la correlación entre el número de familias y la profundidad
# correlacion
cor.test(n_filas_df$familias, n_filas_df$profundidad)
## 
##  Pearson's product-moment correlation
## 
## data:  n_filas_df$familias and n_filas_df$profundidad
## t = -1, df = 17, p-value = 0.3
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.619  0.252
## sample estimates:
##    cor 
## -0.229

 

 


Información de la sesión

## R version 4.1.1 (2021-08-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.2 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
## 
## locale:
##  [1] LC_CTYPE=es_ES.UTF-8      
##  [2] LC_NUMERIC=C              
##  [3] LC_TIME=es_CR.UTF-8       
##  [4] LC_COLLATE=es_ES.UTF-8    
##  [5] LC_MONETARY=es_CR.UTF-8   
##  [6] LC_MESSAGES=es_ES.UTF-8   
##  [7] LC_PAPER=es_CR.UTF-8      
##  [8] LC_NAME=C                 
##  [9] LC_ADDRESS=C              
## [10] LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=es_CR.UTF-8
## [12] LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets 
## [6] methods   base     
## 
## other attached packages:
##  [1] DT_0.23             tufte_0.12         
##  [3] rticles_0.24        revealjs_0.9       
##  [5] rmdformats_1.0.4    rmarkdown_2.14     
##  [7] sketchy_1.0.2       remotes_2.4.2      
##  [9] leaflet_2.1.1       car_3.1-0          
## [11] carData_3.0-5       sjPlot_2.8.10      
## [13] lmerTest_3.1-3      lme4_1.1-29        
## [15] Matrix_1.3-4        scales_1.2.0       
## [17] MASS_7.3-54         emo_0.0.0.9000     
## [19] viridis_0.6.2       viridisLite_0.4.0  
## [21] xaringanExtra_0.7.0 ggplot2_3.3.6      
## [23] RColorBrewer_1.1-3  kableExtra_1.3.4   
## [25] knitr_1.39         
## 
## loaded via a namespace (and not attached):
##   [1] minqa_1.2.4         colorspace_2.0-3   
##   [3] ellipsis_0.3.2      rsconnect_0.8.26   
##   [5] sjlabelled_1.2.0    rprojroot_2.0.3    
##   [7] estimability_1.3    parameters_0.18.1  
##   [9] fs_1.5.2            rstudioapi_0.13    
##  [11] farver_2.1.1        fansi_1.0.3        
##  [13] mvtnorm_1.1-3       lubridate_1.8.0    
##  [15] xml2_1.3.3          splines_4.1.1      
##  [17] cachem_1.0.6        sjmisc_2.8.9       
##  [19] pkgload_1.2.4       jsonlite_1.8.0     
##  [21] nloptr_2.0.3        ggeffects_1.1.2    
##  [23] packrat_0.8.0       broom_0.8.0        
##  [25] effectsize_0.7.0    compiler_4.1.1     
##  [27] httr_1.4.3          backports_1.4.1    
##  [29] sjstats_0.18.1      emmeans_1.7.4-1    
##  [31] assertthat_0.2.1    fastmap_1.1.0      
##  [33] cli_3.3.0           formatR_1.12       
##  [35] htmltools_0.5.3     prettyunits_1.1.1  
##  [37] tools_4.1.1         coda_0.19-4        
##  [39] gtable_0.3.0        glue_1.6.2         
##  [41] dplyr_1.0.9         Rcpp_1.0.9         
##  [43] jquerylib_0.1.4     vctrs_0.4.1        
##  [45] svglite_2.1.0       nlme_3.1-152       
##  [47] crosstalk_1.2.0     insight_0.17.1     
##  [49] xfun_0.31           stringr_1.4.0      
##  [51] ps_1.7.1            brio_1.1.3         
##  [53] testthat_3.1.4      rvest_1.0.2        
##  [55] lifecycle_1.0.1     devtools_2.4.3     
##  [57] ragg_1.2.2          yaml_2.3.5         
##  [59] memoise_2.0.1       gridExtra_2.3      
##  [61] sass_0.4.1          stringi_1.7.8      
##  [63] highr_0.9           bayestestR_0.12.1  
##  [65] desc_1.4.1          boot_1.3-28        
##  [67] pkgbuild_1.3.1      rlang_1.0.4        
##  [69] pkgconfig_2.0.3     systemfonts_1.0.4  
##  [71] evaluate_0.15       lattice_0.20-44    
##  [73] purrr_0.3.4         htmlwidgets_1.5.4  
##  [75] labeling_0.4.2      processx_3.6.1     
##  [77] tidyselect_1.1.2    bookdown_0.27      
##  [79] magrittr_2.0.3      R6_2.5.1           
##  [81] generics_0.1.2      DBI_1.1.3          
##  [83] pillar_1.8.0        withr_2.5.0        
##  [85] mgcv_1.8-36         abind_1.4-5        
##  [87] datawizard_0.4.1    tibble_3.1.8       
##  [89] performance_0.9.0   modelr_0.1.8       
##  [91] crayon_1.5.1        uuid_1.1-0         
##  [93] utf8_1.2.2          usethis_2.1.6      
##  [95] grid_4.1.1          isoband_0.2.5      
##  [97] callr_3.7.0         digest_0.6.29      
##  [99] webshot_0.5.3       xtable_1.8-4       
## [101] tidyr_1.2.0         numDeriv_2016.8-1.1
## [103] textshaping_0.3.6   munsell_0.5.0      
## [105] bslib_0.3.1         sessioninfo_1.2.2