##Parcial introduccion a R

  1. ¿Que es un objeto en R?

Un objeto es una estructura que almacena datos. Estos objetos pueden contener cualquier tipo de datos, como números, cadenas de texto, matrices, data frames, funciones, entre otros.

1.1 ¿Como se crea y se manipula un objeto?

Se usa el operador de asignación “<-” o “=” para asignar un valor a un nombre de objeto. Por ejemplo:

objeto1 = c(1, 2, 3, 4)

objeto2 = matrix(1:9, nrow = 3, ncol = 3)

objeto3 = data.frame(Nombre = c("Juan", "María", "Pedro"), Edad = c(25, 30,28))

Manipulaciones de un objeto

objeto1[3]  # Acceder al tercer elemento
## [1] 3
# Acceder a elementos de una matriz
objeto2[2, 3]  # Acceder al elemento en la segunda fila y tercera columna
## [1] 8
# Acceder a columnas de un data frame
objeto3$Nombre  # Acceder a la columna "Nombre"
## [1] "Juan"  "María" "Pedro"
# Agregar una nueva columna a un data frame
objeto3$Altura <- c(170, 165, 180)

# Calcular la media de un vector
media <- mean(objeto1)
  1.  ¿Cual es la diferencia entra un objeto y una variable?

Una variable en R es un contenedor que almacena un valor, ya sea numérico, de texto, lógico, etc. Las variables son un caso particular de los objetos en R. Por otro lado, un objeto en R es cualquier elemento que R maneja, incluyendo no solo variables, sino también vectores, matrices, dataframes, funciones, y otros tipos de estructuras de datos. En R, todo es un objeto, incluso los valores numéricos o de texto son objetos.

  1. ¿Que es un Script en R?

Un script en R es un archivo de texto plano que contiene instrucciones en lenguaje R que pueden ser ejecutadas por el programa. Estos archivos tienen una extensión .R y permiten a los usuarios escribir y guardar código para su posterior uso, compartición y reutilización.

  1. Explica cómo se ejecuta un script y cuál es su utilidad.

Para ejecutar un script en R, se pueden seguir varios métodos dependiendo del entorno de trabajo. En general, se puede ejecutar un script en RStudio abriendo el archivo .R que contiene el script y luego seleccionando las líneas de código que se desean ejecutar y presionando Ctrl+Enter o haciendo clic en el botón “Run”.

  1. Describe la función de la ventana de comandos en el entorno de Rstudio

La ventana de comandos en RStudio es como una bloc de notas donde puedes escribir instrucciones (codigos) para hacer cosas con tus datos en R. En la ventana puedes probar tus ideas escribiendo y ejecutando comandos uno por uno. Si quieres saber cómo funciona una función, puedes pedir ayuda directamente desde ahí. Además, puedes ver los resultados de tus comandos justo después de escribirlos, lo que hace que sea fácil corregir errores. Es una herramienta genial para explorar tus datos y jugar con tu código antes de hacer cosas más grandes y complicadas.

  1. ¿Cuáles son las ventajas de usar la ventana de comandos frente a un script?

Las ventajas de usar la ventana de comandos en R frente a un script son las siguientes:

Interactividad y Pruebas Rápidas: La ventana de comandos permite ejecutar comandos de forma interactiva, lo que facilita probar rápidamente pequeñas porciones de código sin la necesidad de escribir un script completo. Esto es útil para explorar datos, realizar cálculos simples y experimentar con funciones de manera inmediata.

Retroalimentación Inmediata: Al ejecutar comandos en la ventana de comandos, se obtiene una respuesta inmediata en la consola, lo que facilita la visualización de resultados paso a paso y la depuración de posibles errores en el código.

Flexibilidad y Exploración: La ventana de comandos permite una mayor flexibilidad para realizar análisis ad hoc, probar diferentes enfoques y explorar datos de forma interactiva sin la necesidad de estructurar un script completo.

Aprendizaje y Familiarización: Utilizar la ventana de comandos ayuda a los usuarios a familiarizarse con el lenguaje de programación R, ya que pueden observar y aprender la sintaxis de los comandos a medida que los ejecutan. Esto facilita el proceso de aprendizaje para quienes están comenzando a utilizar R.

  1. Nombra al menos cinco tipos de objetos que existen en R. Describe las características y usos de cada uno.

Vectores: Son colecciones de uno o más objetos del mismo tipo (numéricos, de texto, lógicos, etc.). Los vectores son la estructura de datos más básica en R y permiten realizar operaciones vectorizadas de manera eficiente.

Matrices: Son estructuras bidimensionales que almacenan elementos del mismo tipo. Se utilizan para realizar cálculos y operaciones matriciales.

Data Frames: Son estructuras de datos bidimensionales que pueden almacenar elementos de diferentes tipos (numéricos, de texto, lógicos, etc.). Los data frames son ampliamente utilizados para el manejo y análisis de datos tabulares.

Listas: Son colecciones ordenadas de objetos que pueden ser de diferentes tipos (vectores, matrices, data frames, etc.). Las listas permiten agrupar y manipular diversos tipos de datos en una misma estructura.

Funciones: Son objetos especiales en R que encapsulan un conjunto de instrucciones y pueden ser invocadas por su nombre. Las funciones son fundamentales para la programación en R y permiten reutilizar código.

  1. ¿Qué tipo de objeto se debe utilizar para almacenar datos categóricos?

Para almacenar datos categóricos en R, se debe utilizar un objeto de tipo factor. Los factores en R se utilizan para representar variables de naturaleza categórica, ya sean ordenadas o no ordenadas. Estos son especialmente útiles para manejar variables que representan categorías, como por ejemplo, tipos de flores, marcas de automóviles, o cualquier otra variable que tenga un conjunto finito de categorías.

  1. ¿Cuáles son las funciones básicas de R para importar y exportar datos?

Importar datos:

Desde archivos de texto: read.table(): Importa datos desde un archivo de texto delimitado por espacios, comas u otros caracteres.

read.csv(): Importa datos desde un archivo CSV (valores separados por comas). read.delim(): Importa datos desde un archivo delimitado, generalmente por tabulaciones.

Desde archivos de Excel: read_excel() (del paquete readxl): Importa datos desde archivos de Excel (.xls y .xlsx).

read.xlsx() (del paquete xlsx): Otra función para importar datos desde archivos de Excel.

Desde bases de datos: read.dbi() (del paquete RSQLite, RODBC, etc.): Importa datos desde una base de datos utilizando una conexión a la base de datos.

Exportar datos:

A archivos de texto o CSV: write.table(): Exporta datos a un archivo de texto delimitado. write.csv(): Exporta datos a un archivo CSV. A archivos de Excel: write.xlsx() (del paquete openxlsx): Exporta datos a un archivo de Excel (.xlsx).

  1. Menciona al menos tres funciones que se utilizan comúnmente para manipular datos en R

primera funcion.

-c(posicion del obejto): Permite borrar elementos de un objeto

Segunda funcion Rm: permite borrar elementos de un objeto

Tercera funcion aggregate(): Esta función se utiliza para crear resúmenes de datos basados en factores o variables categóricas.

  1. ¿Cómo se define la clase de un objeto en R? ¿Cuáles son algunos ejemplos de las posibles clases que un objeto puede tener?

En R, la clase de un objeto se define utilizando la función class(), que devuelve el nombre de la clase o clases a las que pertenece el objeto. La clase de un objeto determina su comportamiento y las operaciones que se pueden realizar con él. Algunos ejemplos de las posibles clases que un objeto puede tener incluyen:

numeric: Para números (enteros o flotantes). character: Para cadenas de texto. factor: Para variables categóricas. logical: Para valores lógicos (TRUE/FALSE). Date: Para fechas. POSIXct: Para fechas y horas. list: Para listas de objetos de diferentes clases. data.frame: Para conjuntos de datos tabulares. matrix: Para matrices numéricas. function: Para funciones.

# Definir algunos objetos
numero <- 5
texto <- "Hola"
factor <- factor(c("A", "B", "C"))
vector_logico <- c(TRUE, FALSE, TRUE)
fecha <- as.Date("2024-05-03")
lista <- list(1, "dos", TRUE)
dataframe <- data.frame(x = 1:3, y = c("a", "b", "c"))
matriz <- matrix(1:6, nrow = 2)

# Determinar la clase de los objetos
class(numero)        # Devuelve "numeric"
## [1] "numeric"
class(texto)         # Devuelve "character"
## [1] "character"
class(factor)        # Devuelve "factor"
## [1] "factor"
class(vector_logico) # Devuelve "logical"
## [1] "logical"
class(fecha)         # Devuelve "Date"
## [1] "Date"
class(lista)         # Devuelve "list"
## [1] "list"
class(dataframe)     # Devuelve "data.frame"
## [1] "data.frame"
class(matriz)        # Devuelve "matrix"
## [1] "matrix" "array"

MANEJO DE DATOS BASICOS

datos = data.frame(Nombre = c("David", "Angel", "Santiago", "Andrea", "Leonardo"),Edad = c(32, 25, 24, 22, 31), Ciudad = c("Neiva", "Neiva", 
"Neiva", "Florencia", "Neiva"))
datos = datos[order(datos$Edad),]
#Mayores_de_30 = which(datos$Edad >30)
Mayores_de_30 = datos[datos$Edad > 30, ]

knitr::kable(datos)
Nombre Edad Ciudad
4 Andrea 22 Florencia
3 Santiago 24 Neiva
2 Angel 25 Neiva
5 Leonardo 31 Neiva
1 David 32 Neiva
knitr::kable(Mayores_de_30)
Nombre Edad Ciudad
5 Leonardo 31 Neiva
1 David 32 Neiva

Manipulacion de datos:

datos1 = data.frame(Nombre = c("David", "Angel", "Santiago", "Andrea", "Leonardo"),Edad = c(32, 25, 24, 22, 31), Ciudad = c("Neiva", "Neiva", 
"Neiva", "Florencia", "Neiva"))
datos1$Años_de_experiencia = c(2, 3, 4 ,5, 1)
datos1$Ciudad[datos$Ciudad == "Neiva"] <- "Florencia"
eliminado = datos$Nombre[-c(1)]
eliminado = c(eliminado, "Juan", "Fer", "Katie")

Visualización de datos

library(ggplot2)

datos2 = data.frame(Nombre = c("David", "Angel", "Santiago", "Andrea", "Leonardo"), Edad = c(32, 25, 24, 22, 31), Ciudad = c("Bogota", "Pereira", 
"Neiva", "Florencia", "Neiva"))

Frecuencia_ciudad = table(datos2$Ciudad)

datos_frecuencia <- as.data.frame(Frecuencia_ciudad)

colnames(datos_frecuencia) <- c("Ciudad", "Frecuencia")

ggplot(datos_frecuencia, aes(x = Ciudad, y = Frecuencia)) + geom_bar(stat = "identity", fill = "skyblue") + labs(title = "Grafico de Barras de Frecuencia", x = "Ciudades", y= "Frecuencia")

En el grafico anterior se evidencia que el 40% de las personas analizadas y tabuladas en nuestro data frame residen en Neiva por tanto el otro 60% residen en otras ciudades como Florencia, Bogota y Pereira siendo el porcentaje de residencia entre estos iguales al 20%.

Analisis estadisico basico

#install.packages("summarytools")
library(summarytools)
## Warning: package 'summarytools' was built under R version 4.3.3
data("mtcars")
summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
mean(mtcars$mpg)
## [1] 20.09062
median(mtcars$mpg)
## [1] 19.2
sd(mtcars$mpg)
## [1] 6.026948
hist(mtcars$mpg)

url <- "https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt"
data <- read.table(url, header = TRUE, sep = "\t")

#Medidas de tendencia central
data_numerica = data[, sapply(data, is.numeric)]
Media = colMeans(data_numerica, na.rm = T)
print(Media)
##       bwt gestation       age    height    weight 
## 119.57686 279.33851  27.25527  64.04778 128.62583
# Medidas de posicion
#Percentiles

percentiles_data <- apply(data_numerica, 2, quantile, probs = c(0.25, 0.5, 0.75), na.rm = T)
print(percentiles_data)
##        bwt gestation age height weight
## 25% 108.75       272  23     62 114.75
## 50% 120.00       280  26     64 125.00
## 75% 131.00       288  31     66 139.00
#Quartiles

cuartiles_data <- apply(data_numerica, 2, quantile, probs = c(0.25, 0.5, 0.75), na.rm=T)
print(cuartiles_data)
##        bwt gestation age height weight
## 25% 108.75       272  23     62 114.75
## 50% 120.00       280  26     64 125.00
## 75% 131.00       288  31     66 139.00
# Medidas de dispercion

rango_data <- sapply(data_numerica, function(x) {
  x <- na.omit(x)
  if (length(x) > 0) {diff(range(x))} else {NA}})

desviacion_data <- apply(data_numerica, 2, sd, na.rm=T)

varianza_data <- apply(data_numerica, 2, var, na.rm=T)

# Medidas de forma

qqnorm(data$bwt)

#Frecuencias

frecuencia_data = table(data$bwt)

hist(data$bwt, breaks = length(unique(data$bwt)), main = "Distribucion de frecuencias", xlab = "Valor", ylab = "Frecuencia")

Base de datos cargada

library(ggplot2)

dollar <- read.csv("~/database_15min.csv", header=FALSE)

dollar_numeric = dollar[, sapply(dollar, is.numeric)]

head(dollar, 6)
##               V1     V2     V3     V4     V5   V6        V7   V8     V9    V10
## 1 21-11-19 09:03 4206.0 4206.5 4204.5 4206.0 5024 211292030 1443 4201.6 4202.4
## 2 21-11-19 09:04 4206.5 4206.5 4205.0 4205.5 4451 187200190 1175 4202.1 4202.5
## 3 21-11-19 09:05 4205.5 4206.5 4203.0 4204.5 6515 273933345 1627 4202.5 4202.5
## 4 21-11-19 09:06 4204.5 4204.5 4203.0 4203.5 2751 115640535  801 4202.6 4202.5
## 5 21-11-19 09:07 4203.0 4204.0 4202.0 4202.5 3360 141218695 1038 4202.6 4202.5
## 6 21-11-19 09:08 4202.0 4203.0 4201.5 4202.0 2545 106941715  900 4202.5 4202.5
##      V11    V12    V13    V14    V15    V16    V17  V18
## 1 4202.8 4201.2 -0.637 -0.126 -0.125 -0.440 -0.377 4200
## 2 4202.9 4201.3 -0.304 -0.136  0.459 -0.090 -0.320 4201
## 3 4203.1 4201.4 -0.099 -0.134  0.679  0.105 -0.235 4199
## 4 4203.1 4201.4 -0.005 -0.127  0.658  0.176 -0.153 4201
## 5 4203.1 4201.4 -0.007 -0.120  0.486  0.151 -0.092 4207
## 6 4203.1 4201.4 -0.051 -0.116  0.290  0.089 -0.056 4211
summary(dollar_numeric)
##        V2             V3             V4             V5             V6       
##  Min.   :4046   Min.   :4046   Min.   :4046   Min.   :4046   Min.   :   11  
##  1st Qu.:4202   1st Qu.:4202   1st Qu.:4201   1st Qu.:4202   1st Qu.: 1155  
##  Median :4324   Median :4326   Median :4324   Median :4324   Median : 2162  
##  Mean   :4461   Mean   :4462   Mean   :4459   Mean   :4461   Mean   : 2859  
##  3rd Qu.:4666   3rd Qu.:4668   3rd Qu.:4664   3rd Qu.:4666   3rd Qu.: 3695  
##  Max.   :5246   Max.   :5260   Max.   :5242   Max.   :5248   Max.   :74413  
##        V7                  V8                V9            V10      
##  Min.   :2.415e+05   Min.   :   11.0   Min.   :4048   Min.   :4051  
##  1st Qu.:5.023e+07   1st Qu.:  291.0   1st Qu.:4202   1st Qu.:4201  
##  Median :9.610e+07   Median :  601.0   Median :4324   Median :4324  
##  Mean   :1.294e+08   Mean   :  899.1   Mean   :4460   Mean   :4459  
##  3rd Qu.:1.686e+08   3rd Qu.: 1183.0   3rd Qu.:4666   3rd Qu.:4662  
##  Max.   :3.165e+09   Max.   :17235.0   Max.   :5237   Max.   :5221  
##       V11            V12            V13                V14          
##  Min.   :4044   Min.   :4047   Min.   :-44.0130   Min.   :-32.0430  
##  1st Qu.:4203   1st Qu.:4201   1st Qu.: -1.3800   1st Qu.: -0.4860  
##  Median :4325   Median :4324   Median :  0.3620   Median :  0.5950  
##  Mean   :4462   Mean   :4459   Mean   : -0.3622   Mean   :  0.4426  
##  3rd Qu.:4668   3rd Qu.:4665   3rd Qu.:  1.5400   3rd Qu.:  2.0700  
##  Max.   :5241   Max.   :5232   Max.   :  9.8250   Max.   : 30.3600  
##       V15                  V16                V17                V18      
##  Min.   :-18.654000   Min.   :-15.2320   Min.   :-12.7670   Min.   :4046  
##  1st Qu.: -0.487000   1st Qu.: -0.6300   1st Qu.: -0.5810   1st Qu.:4202  
##  Median :  0.020000   Median :  0.1790   Median :  0.2050   Median :4325  
##  Mean   : -0.000059   Mean   :  0.1392   Mean   :  0.1753   Mean   :4461  
##  3rd Qu.:  0.527000   3rd Qu.:  0.9920   3rd Qu.:  0.9630   3rd Qu.:4666  
##  Max.   : 12.044000   Max.   :  9.9090   Max.   :  9.7920   Max.   :5246
colnames(dollar) = c("date", "openprice", "maximim value", "minimum value", "close price", "volume", "financial", "negotiations", "mme13", "mme72", "high mean", "low mean" ,"diffMACD", "deaMACD", "MACDlh", "difflh", "dealh", "target" )


ggplot(dollar, aes(x = date, y = openprice, fill = variable)) + geom_bar(stat = "identity", fill = "skyblue") + labs(title = "Grafico de Barras", x = "Fecha", y= "Precio apertura") +theme_minimal()

##Calcula la desviacion estandar de un vector de datos

En R, puedes calcular medidas de dispersión como la varianza y la desviación estándar utilizando funciones incorporadas en R base o funciones de paquetes específicos. Aquí tienes algunos métodos comunes y las funciones asociadas para calcular estas medidas de dispersión:

Varianza: La varianza es una medida de dispersión que describe qué tan dispersos están los valores de un conjunto de datos alrededor de su media.

Ejemplo de uso:

varianza <- var(datos)

Calcula la varianza de un vector de datos

Desviación estándar: La desviación estándar es la raíz cuadrada de la varianza y proporciona una medida de dispersión similar a la varianza pero en la misma escala de los datos originales.

Ejemplo de uso:

desviacion_estandar <- sd(datos)