##Parcial introduccion a 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)
¿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.
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.
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”.
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.
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.
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.
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.
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).
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.
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"
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 |
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")
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%.
#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")
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)
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)