Trabajaremos principalmente con ggplot2 (incluido en
tidyverse) y readxl para importar los
datos.
library(tidyverse)
library(readxl)
En esta clase trabajaremos con dos bases de datos:
ceramica.xlsx y Diametro ceramica.xlsx. Puedes
encontrarlas en el repositorio del curso.
ceramica <- read_excel("~/Desktop/work/0_Cuantitativa_2026/ANT305Q-2026/Clases/Clase4/ceramica.xlsx")
ceramica
## # A tibble: 2 × 4
## Categoria Costa Valle Cordillera
## <chr> <dbl> <dbl> <dbl>
## 1 Modelada 31 44 25
## 2 Incisa 29 22 12
diametro_ceramica <- read_excel("~/Desktop/work/0_Cuantitativa_2026/ANT305Q-2026/Clases/Clase4/Diametro ceramica.xlsx")
diametro_ceramica
## # A tibble: 63 × 2
## Zona Diametro
## <chr> <dbl>
## 1 Costa 7.5
## 2 Costa 7.3
## 3 Costa 11.5
## 4 Costa 7.5
## 5 Costa 6.6
## 6 Costa 4.2
## 7 Costa 4
## 8 Costa 6
## 9 Costa 7.7
## 10 Costa 9
## # ℹ 53 more rows
Para calcular qué porcentaje representa cada fila dentro de su
columna usamos la función prop.table(), que calcula
proporciones, y luego multiplicamos por 100 para obtener
porcentajes.
Primero transformamos nuestra tabla a un data.frame, ya
que vamos a agregar columnas nuevas con los porcentajes calculados.
# Transformamos a data frame
data1 <- data.frame(ceramica)
# Calculamos el porcentaje de columna para cada zona geográfica
data1$porcentCosta <- prop.table(data1$Costa) * 100
data1$porcentInterior <- prop.table(data1$Valle) * 100
data1$porcentAltiplano <- prop.table(data1$Cordillera) * 100
# Revisamos el resultado: data1 debe incluir las nuevas columnas con porcentajes
data1
## Categoria Costa Valle Cordillera porcentCosta porcentInterior
## 1 Modelada 31 44 25 51.66667 66.66667
## 2 Incisa 29 22 12 48.33333 33.33333
## porcentAltiplano
## 1 67.56757
## 2 32.43243
Para poder graficar en ggplot2 necesitamos que los datos
estén en un formato específico: cada fila debe ser una observación. Por
eso creamos un nuevo data.frame con tres columnas:
Sitio (zona geográfica), Categoria (tipo de
cerámica) y Porcentaje (el valor calculado).
Usamos la función rep() para repetir los nombres de las
zonas, y escribimos las categorías y porcentajes en el mismo orden.
data2 <- data.frame(
Sitio = rep(c("Costa", "Interior", "Altiplano"), each = 2),
Categoria = c("Incisa", "Modelada", "Incisa", "Modelada", "Incisa", "Modelada"),
Porcentaje = c(48.33, 51.67, 33.33, 66.67, 32.43, 67.57)
)
# Verificamos que el data frame se haya generado correctamente
data2
## Sitio Categoria Porcentaje
## 1 Costa Incisa 48.33
## 2 Costa Modelada 51.67
## 3 Interior Incisa 33.33
## 4 Interior Modelada 66.67
## 5 Altiplano Incisa 32.43
## 6 Altiplano Modelada 67.57
geom_bar().Para crear gráficos de barras usamos la función
geom_bar(). Como ya tenemos los valores calculados (no
queremos que R los cuente), debemos agregar
stat = "identity". Para que las barras de cada categoría
aparezcan una al lado de la otra usamos
position = position_dodge().
ggplot(data = data2, aes(x = Sitio, y = Porcentaje, fill = Categoria)) +
geom_bar(stat = "identity", position = position_dodge()) +
scale_y_continuous(limits = c(0, 100)) +
scale_fill_manual(values = c("purple", "blue")) +
labs(x = "Zona geográfica", y = "Porcentaje (%)", title = "Cerámica por zona geográfica") +
theme_minimal() +
theme(text = element_text(size = 12))
Usando la base de datos Diametro ceramica.xlsx, podemos
comparar la distribución del diámetro del borde de la cerámica incisa
entre las distintas zonas geográficas con un boxplot.
ggplot(data = diametro_ceramica, aes(x = Zona, y = Diametro, fill = Zona)) +
geom_boxplot() +
scale_fill_manual(values = c("purple", "lightblue", "yellow3")) +
scale_y_continuous(limits = c(0, 26)) +
labs(x = "Zona geográfica", y = "Diámetro (cm)", title = "Diámetro borde cerámica incisa por zona") +
theme_minimal()
Para esta actividad trabajaremos con las bases de datos
Liticos.xlsx y Largo liticos.xlsx. Puedes
encontrarlas en el repositorio del curso.
Crea un nuevo data.frame a partir de la base de
datos Liticos y calcula los porcentajes de columna para
cada zona geográfica.
Crea un nuevo data.frame que incluya las columnas
Sitio, Categoria y Porcentaje,
siguiendo el mismo procedimiento que usamos con la cerámica.
Realiza un gráfico de barras usando los datos del nuevo
data.frame. ¿Qué tipo de punta es más frecuente en el
altiplano, costa e interior, respectivamente? ¿Existen diferencias entre
zonas? Si fuese así, ¿a qué crees que se deben?
Realiza un boxplot con la base de datos
Largo liticos para comparar cómo se distribuyen los largos
de las puntas de obsidiana por zona geográfica. ¿Dónde hay puntas más
largas? ¿Dónde hay puntas más pequeñas? ¿Las distribuciones son
simétricas o dispersas? ¿Dónde tienden a agruparse los datos en cada
boxplot?