getwd() # Saber el directorio de trabajo en el que está parado
## [1] "C:/Users/HP/OneDrive/Documentos/00. Curso de Udemy/Curso de Rstudio Avanzado"
setwd("~/00. Curso de Udemy/Curso de Rstudio Avanzado")
Owls <- read.table(file = "Owls.txt", header = T)
names(Owls)
## [1] "Nest"               "FoodTreatment"      "SexParent"         
## [4] "ArrivalTime"        "SiblingNegotiation" "BroodSize"         
## [7] "NegPerChick"
str(Owls) #Visualizar aquellas variables cuyos tipos de datos son cadenas de 
## 'data.frame':    599 obs. of  7 variables:
##  $ Nest              : chr  "AutavauxTV" "AutavauxTV" "AutavauxTV" "AutavauxTV" ...
##  $ FoodTreatment     : chr  "Deprived" "Satiated" "Deprived" "Deprived" ...
##  $ SexParent         : chr  "Male" "Male" "Male" "Male" ...
##  $ ArrivalTime       : num  22.2 22.4 22.5 22.6 22.6 ...
##  $ SiblingNegotiation: int  4 0 2 2 2 2 18 4 18 0 ...
##  $ BroodSize         : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ NegPerChick       : num  0.8 0 0.4 0.4 0.4 0.4 3.6 0.8 3.6 0 ...
#caracteres, númerico, enteros, etc.
#View(Owls) #Observar la tabla de valores
#Owls$Nest #Visualizar todos los valores asociados a la variable Nest
unique(Owls$Nest) #Valores únicos asociados
##  [1] "AutavauxTV"      "Bochet"          "Champmartin"     "ChEsard"        
##  [5] "Chevroux"        "CorcellesFavres" "Etrabloz"        "Forel"          
##  [9] "Franex"          "GDLV"            "Gletterens"      "Henniez"        
## [13] "Jeuss"           "LesPlanches"     "Lucens"          "Lully"          
## [17] "Marnand"         "Moutet"          "Murist"          "Oleyes"         
## [21] "Payerne"         "Rueyes"          "Seiry"           "SEvaz"          
## [25] "StAubin"         "Trey"            "Yvonnand"
length(unique(Owls$Nest)) #Cuandos valores únicos asociados tiene
## [1] 27
View(Owls[Owls$Nest=="AutavauxTV", ]) #Observa un dataframe
length(Owls[Owls$Nest=="AutavauxTV", ]) #Saber cuando de esos df hay
## [1] 7
Owls.ATV <- Owls[Owls$Nest == "AutavauxTV", ] #Almacenar en una variable
#únicamente los dataframes de los valores AutavauxTV
View(Owls.ATV)

#Gráfico de diagrama de dispersión o scatterplot
plot(x = Owls.ATV$ArrivalTime,
     y = Owls.ATV$NegPerChick,
     xlab = "Arrival Time",main = "AutavauxTV",
     ylab = "Negotiation Behaviour")

#Código General
Owls.Bot <- Owls[Owls$Nest == "Bochet", ] #df de todas las líneas que tienen "Bochet"
View(Owls.Bot)
dim(Owls.Bot) #23 filas u observaciones y 7 columnas
## [1] 23  7
plot(x = Owls.Bot$ArrivalTime,
     y = Owls.Bot$NegPerChick,
     xlab = "Arrival Time",
     ylab = "Negotitation Behavior",
     main = "Bochet")

#Códigos más dinámicos y menos mecánicos
#Es lo mismo que el código general pero escrito de distinta forma
#Más práctico
Nest.i <- "Bochet"
Owls.i <- Owls[Owls$Nest == Nest.i, ]
plot(x = Owls.i$ArrivalTime,
     y = Owls.i$NegPerChick,
     xlab = "Arrival Time", main = Nest.i,
     ylab = "Negotitation Behaviour")

#Guardar gráficas en la laptop
#Ruteo: C:\Users\HP\OneDrive\Documentos\00. Curso de Udemy\Curso de Rstudio Avanzado
#Acá guardaremos los gráficos
setwd("C:\\Users\\HP\\OneDrive\\Documentos\\00. Curso de Udemy\\Curso de Rstudio Avanzado")
#Acá cambiamos el directorio
Nest.i <- "Bochet"
class(Nest.i)
## [1] "character"
Owls.i <- Owls[Owls$Nest == Nest.i, ]
YourFileName <- paste(Nest.i, ".jpg", sep = "") #unir todas las palabras, variables, objetos, etc.)
jpeg(file = YourFileName) #Almacenamiento de todas las imágenes en el ruteo que le dimos
plot(x = Owls.i$ArrivalTime,
     y = Owls.i$NegPerChick,
     xlab = "Arrival Time", main = Nest.i,
     ylab = "Negotitation behaviour")
dev.off()
## png 
##   2
#Construir loops de manera dinámica
AllNest <- unique(Owls$Nest) #Creación de variable
unique(Owls$Nest) #Valores únicos
##  [1] "AutavauxTV"      "Bochet"          "Champmartin"     "ChEsard"        
##  [5] "Chevroux"        "CorcellesFavres" "Etrabloz"        "Forel"          
##  [9] "Franex"          "GDLV"            "Gletterens"      "Henniez"        
## [13] "Jeuss"           "LesPlanches"     "Lucens"          "Lully"          
## [17] "Marnand"         "Moutet"          "Murist"          "Oleyes"         
## [21] "Payerne"         "Rueyes"          "Seiry"           "SEvaz"          
## [25] "StAubin"         "Trey"            "Yvonnand"
length(unique(Owls$Nest))
## [1] 27
setwd("C:\\Users\\HP\\OneDrive\\Documentos\\00. Curso de Udemy\\Curso de Rstudio Avanzado")
for (i in 1:length(unique(Owls$Nest))){ #se pudo poner 1:27, pero esta es dinámica
    Nest.i <- AllNest[i] # i = 1 en la primera vuelta.
    Owls.i <- Owls[Owls$Nest == Nest.i, ]
    YourFileName <- paste(Nest.i, ".jpg", sep = "")
    jpeg(file = YourFileName)
    plot(x = Owls.i$ArrivalTime, y = Owls.i$NegPerChick,
         xlab = "Arrival Time",
         ylab = "Negotitation behaviour", main = Nest.i)
    dev.off()
}
#Se construyeron gráficos de cada uno de los tipos de nidos (nest)

#Funciones y valores faltantes
setwd("C:\\Users\\HP\\OneDrive\\Documentos\\00. Curso de Udemy\\Curso de Rstudio Avanzado")
#Importar y exportar archivos del ruteo de trabajo
Veg <- read.table(file = "Vegetation2.txt", header = T)
names(Veg)
##  [1] "TransectName" "Samples"      "Transect"     "Time"         "R"           
##  [6] "ROCK"         "LITTER"       "ML"           "BARESOIL"     "FallPrec"    
## [11] "SprPrec"      "SumPrec"      "WinPrec"      "FallTmax"     "SprTmax"     
## [16] "SumTmax"      "WinTmax"      "FallTmin"     "SprTmin"      "SumTmin"     
## [21] "WinTmin"      "PCTSAND"      "PCTSILT"      "PCTOrgC"
#View(Veg)

# N/A´s Values
# Valores faltantes, tomas de datos que no fueron registradas
# que no fueron anotadas ni ubicadas en el sistema

#Creación de la función que dice los N/A x columna
NAPerVarible <- function(X1) { #mide la cant de N/A por cada variable
  D1 <- is.na(X1) #identificar valores N/A
  #es booleano, si cumple es 1, sino da 0
  colSums(D1)
}

#Llamar a la función
NAPerVarible(Veg[,5:24]) #de la columna 5 a la 24
##        R     ROCK   LITTER       ML BARESOIL FallPrec  SprPrec  SumPrec 
##        0        0        0        0        0        0        0        0 
##  WinPrec FallTmax  SprTmax  SumTmax  WinTmax FallTmin  SprTmin  SumTmin 
##        0        0        0        0        0        0        0        0 
##  WinTmin  PCTSAND  PCTSILT  PCTOrgC 
##        0        0        0        0
#Nos muestra que no hay N/As

# Zeros and NAs
setwd("C:\\Users\\HP\\OneDrive\\Documentos\\00. Curso de Udemy\\Curso de Rstudio Avanzado")
Parasite <- read.table(file = "CodParasite.txt", header = T)
names(Parasite) #names(Nombre_Objeto) == colnames(Nombre_Objeto)
##  [1] "Sample"     "Intensity"  "Prevalence" "Year"       "Depth"     
##  [6] "Weight"     "Length"     "Sex"        "Stage"      "Age"       
## [11] "Area"
#es el mismo resultado de código

#Evaluando si la base de datos tiene valores faltantes:
NAPerVarible(Parasite) #3 de las 11 var tienen valores N/A
##     Sample  Intensity Prevalence       Year      Depth     Weight     Length 
##          0         57          0          0          0          6          6 
##        Sex      Stage        Age       Area 
##          0          0          0          0
#Cantidad de valores faltantes que hay en una base de datos

# Visualizar valores nulos por columna (variable)
ZerosPerVariable <- function(X1){
  D1 = (X1 == 0) #D1 es una variable ficticia, por estar dentro de la fx
  colSums(D1)
}

#Valor faltante no es lo mismo a valor nulo

ZerosPerVariable(Parasite)
##     Sample  Intensity Prevalence       Year      Depth     Weight     Length 
##          0         NA        654          0          0         NA         NA 
##        Sex      Stage        Age       Area 
##         82         82         84          0
#Intensity, Weight, Length nos muestra N/A porque tenemos fx sensibles
#Ante valores faltantes, realizar cálculos (media, promedios, etc)
#se complica cuando hay valores faltantes
#Si quisieramos corregir la fx ZeroPerVariable haríamos lo sgte:

ZerosPerVariableCorregido <- function(Y1){
  D2 = (Y1 == 0)
  colSums(D2, na.rm = T)
}

ZerosPerVariableCorregido(Parasite)
##     Sample  Intensity Prevalence       Year      Depth     Weight     Length 
##          0        654        654          0          0          0          0 
##        Sex      Stage        Age       Area 
##         82         82         84          0
#Función con varios argumentos
#En este ejemplo que diga los N/A y valores nulos a la vez

VariableInfo <- function(x1, Choice1){
  if (Choice1 == "Zeros") {D1 = (x1 == 0)}
  if (Choice1 == "NAs") {D1 <- is.na(x1)}
  colSums(D1, na.rm = T) #na.rm = T o na.rm
}

VariableInfo(Parasite, "Zeros")
##     Sample  Intensity Prevalence       Year      Depth     Weight     Length 
##          0        654        654          0          0          0          0 
##        Sex      Stage        Age       Area 
##         82         82         84          0