Haga un bucle for que una todos los datos contenidos en los archivos de texto en un solo cuadro de datos (‘data frame’, debe llamarse ‘datos_camaras’) y añada una columna con el nombre del archivo de donde provienen los datos (debe llamarse ‘archivo’; pistas: 1) añadir el nombre del archivo en una columna se hace en el cuerpo del bucle luego de leer el archivo; 2) recuerden usar basename()).
Respuesta:
Código
# crear un cuadro de datos vacios donde poner los resultadosdatos_camaras <-data.frame()# ciclar sobre los archivos para leer los datosfor(i in archivos_txt){# leer datos txt <-read.table(i, header =TRUE, skip =4, sep ="\t")# añadir nombre de archivo txt$archivo <-basename(i)# adjuntar datos datos_camaras <-rbind(datos_camaras, txt) }
Haga un bucle sapply que devuelva el número de familias para cada archivo. El bucle debe usar los datos en el data frame ‘datos_camaras’ creado en el ejercicio 1 (no debe leer de nuevo los archivos de texto). El resultado debe ser guardado en un cuadro de datos (‘data frame’) que contenga las columnas ‘archivo’ y ‘n_familias’. (pistas: 1) necesitan crear una función en la llamada del bucle; 2) el bucle debe ciclar sobre cada uno de los nombres de archivo; 3) deben crear un subconjunto de los datos para cada archivo a lo interno del bucle). Las primeras 3 filas del cuadro de datos deben verse así:
# ciclar sobre los nombres de archivos en datos_camaras$archivon_familias <-sapply(unique(datos_camaras$archivo), function(x){# leer datos de un archivo Y <- datos_camaras[datos_camaras$archivo == x, ]# estimar numero de familias n_fams <-length(unique(Y$Family))return(n_fams) })# guardar resultados en un cuadro de datoscam_dat <-data.frame(archivo =basename(unique(datos_camaras$archivo)), n_familias = n_familias, row.names =1:length(n_familias))
Haga un bucle sapply que devuelva el número de géneros (columna ‘genus’) para cada archivo. El bucle debe usar los datos en el data frame ‘datos_camaras’ creado en el ejercicio 1 (no debe leer de nuevo los archivos de texto). El resultado debe ser añadido como una nueva columna al cuadro de datos creado en el ejercicio 2. Las primeras 3 filas del cuadro de datos deben verse así:
# ciclar sobre los nombres de archivos en datos_camaras$archivocam_dat$n_generos <-sapply(unique(datos_camaras$archivo), function(x){# leer datos de un archivo Y <- datos_camaras[datos_camaras$archivo == x, ]# estimar numero de generos n_gens <-length(unique(Y$Genus))return(n_gens) })
Haga un bucle sapply que devuelva la fecha de creación del video para cada archivo. El bucle debe usar los datos en el data frame ‘datos_camaras’ creado en el ejercicio 1 (no debe leer de nuevo los archivos de texto). El resultado debe ser añadido como una nueva columna al cuadro de datos creado en el ejercicio 2. Las primeras 3 filas del cuadro de datos deben verse así:
# ciclar sobre los nombres de archivos en datos_camaras$archivocam_dat$date <-sapply(unique(datos_camaras$archivo), function(x){# leer datos de un archivo Y <- datos_camaras[datos_camaras$archivo == x, ]# extraer fecha date <-length(unique(Y$Date))return(date) })
Haga un bucle sapply que calcule el número de veces que se observó cada especie. El bucle debe trabajar sobre el data frame ‘datos_camaras’ creado en el ejercicio 1 (no debe leer de nuevo los archivos de texto) y el cálculo debe ser la suma de la columna ‘MaxN’. Ponga los resultados en un cuadro de datos con columnas para especie y número de observaciones. (pista: unique(datos_camaras$Species)). Remueva el campo en el que especie es igual a ““. Las primeras 3 filas del cuadro de datos deben verse así:
spp
n_obs
xanthopterus
xanthopterus
145
laticlavius
laticlavius
25
polylepis
polylepis
26
Respuesta:
Código
# ciclar sobre los nombres de archivos en datos_camaras$archivon_obs <-sapply(unique(datos_camaras$Species), function(x){# leer datos de un archivo X <- datos_camaras[datos_camaras$Species == x, ]# sumar numero de observaciones obs <-sum(X$MaxN)return(obs)})sp_dat <-data.frame(spp =unique(datos_camaras$Species), n_obs)sp_dat <- sp_dat[sp_dat$spp !="", ]
Utilice bucles sapply para añadir el mínimo y máximo de la profundidad para cada una de las especies en el cuadro de datos creado en el ejercicio anterior (pistas: 1) asegúrese que la columna de profundidad es numérica antes de calcular las profundidades; 2) gsub(" m", "", vector); 3) gsub(",", ".", vector); 4) as.numeric()). Las primeras 3 filas del cuadro de datos deben verse así:
spp
n_obs
min_prof
max_prof
xanthopterus
xanthopterus
145
6.4
31.6
laticlavius
laticlavius
25
9.6
31.6
polylepis
polylepis
26
9.6
30.0
Respuesta:
Código
# convertir profundidad a una columna numericadatos_camaras$Depth <-gsub(" m", "", datos_camaras$Depth)datos_camaras$Depth <-gsub(",", ".", datos_camaras$Depth)datos_camaras$Depth <-as.numeric(datos_camaras$Depth)# ciclar sobre los nombres de especiessp_dat$min_prof <-sapply(sp_dat$spp, function(x){# leer los datos para una especie X <- datos_camaras[datos_camaras$Species == x, ]# calcular el minimo de la profundidad min_prf <-min(X$Depth, na.rm =TRUE)return(min_prf)})# ciclar sobre los nombres de especiessp_dat$max_prof <-sapply(sp_dat$spp, function(x){# leer los datos para una especie X <- datos_camaras[datos_camaras$Species == x, ]# calcular el maximo de profundidad max_prf <-max(X$Depth, na.rm =TRUE)return(max_prf)})
Calcule el rango de profundidad (i.e. la diferencia entre el mínimo y el máximo de la profundidad) para cada especie y añádalo como una columna al cuadro de datos creado en el ejercicio 5. Las primeras 3 filas del cuadro de datos deben verse así:
spp
n_obs
min_prof
max_prof
rango_prof
xanthopterus
xanthopterus
145
6.4
31.6
25.2
laticlavius
laticlavius
25
9.6
31.6
22.0
polylepis
polylepis
26
9.6
30.0
20.4
Respuesta:
Código
# calcular el maximo menos el minimo de profundidadsp_dat$rango_prof <- sp_dat$max_prof - sp_dat$min_prof
Incluya el cuadro de datos generado en los ejercicios 5 a 7 como una tabla en su reporte usando la función DT del paquete datatable.
Respuesta:
Código
library(DT)datatable(sp_dat)
Publique el reporte en Rpubs y añada el enlace en el reporte (use un enlace en el texto).