datos |>
  select(1:3, 5) |>
  mutate(ejemplo = "hola")

datos |>
  select(1:3, 5) |>
  mutate(ejemplo = "hola") |>
  mutate(copia = personas)

datos |>
  select(1:3, 5) |>
  mutate(ejemplo = "hola") |>
  mutate(copia = personas) |>
  mutate(miles = personas / 1000)

# ordenar datos
datos_m <- datos |>
  rename(censo = personas_proy) |>
  select(region, comuna, censo, personas) |>
  mutate(miles = personas / 1000)

# calcular porcentar
datos_p <- datos_m |>
  mutate(porcentaje = personas / censo) |>
  mutate(porcentaje = porcentaje * 100)

datos_p |>
  mutate(personas = 0) -> datos_p2 # cursed

datos_p |>
  mutate(miles = round(miles, 0))


trabajos <- tibble(
  persona = c(1, 2, 3, 4, 5),
  empleo = c(
    "sociólogo",
    "Socióloga",
    "soy sociólogo",
    "socioloco",
    "Sociólogx"
  )
)

library(stringr)

trabajos |>
  mutate(sociologx = empleo == "sociólogo")

trabajos |>
  mutate(sociologx = str_detect(empleo, "sociólogo"))

trabajos |>
  mutate(empleo = str_to_lower(empleo)) |>
  mutate(sociologx = str_detect(empleo, "sociólog"))

trabajos |>
  mutate(empleo = str_to_lower(empleo)) |>
  mutate(sociologx = str_detect(empleo, "sociólog|socioloco"))

trabajos |>
  mutate(empleo = str_to_lower(empleo)) |>
  mutate(empleo = str_replace(empleo, "socio", "soció")) |>
  mutate(empleo = str_replace(empleo, "socióloco", "sociólogo")) |>
  mutate(sociologx = str_detect(empleo, "sociólog"))


datos_cat <- datos_p |>
  mutate(
    nivel = ifelse(
      porcentaje > 20,
      yes = "Alto",
      no = "Bajo"
    )
  )

datos_cat |>
  count(nivel)

datos_cat |>
  count(region, nivel) |>
  filter(nivel == "Alto") |>
  arrange(desc(n)) |>
  rename(n_comunas_alta_pobreza = n)


datos_cat |>
  slice_sample(n = 10) |>
  mutate(
    feas = case_when(
      region == "Metropolitana" ~ "Fea"
    )
  )


datos_cat |>
  # slice_sample(n = 10) |>
  mutate(
    feas = case_when(
      region == "Metropolitana" ~ "Fea",
      region == "Los Lagos" ~ "Linda",
      region == "Valparaíso" ~ "Horrible"
    )
  )

datos_cat |>
  # slice_sample(n = 10) |>
  mutate(
    nivel_2 = case_when(
      porcentaje > 30 ~ "Alto",
      porcentaje > 20 ~ "Medio",
      porcentaje > 10 ~ "Bajo",
      porcentaje <= 10 ~ "Muy bajo"
    )
  ) # |> count(nivel_2)

datos_cat_2 <- datos_cat |>
  mutate(
    nivel_2 = case_when(
      porcentaje > 30 ~ "Alto",
      porcentaje > 20 ~ "Medio",
      porcentaje > 10 ~ "Bajo",
      porcentaje <= 10 ~ "Muy bajo"
    )
  )


edad <- 30

ifelse(edad > 18, "mayor", "menor")

edades <- c(17, 30, 31, 32, 44)

ifelse(edades > 18, "mayor", "menor")

datos_cat$porcentaje
datos_cat |> pull(porcentaje)

datos_cat |>
  mutate(total = sum(personas))

datos_cat |>
  summarise(sum(personas))

datos_cat |>
  group_by(region) |>
  summarise(total_personas = sum(personas))

datos_cat |>
  group_by(region) |>
  summarise(
    total_personas = sum(personas),
    total_censo = sum(censo),
  )

datos_cat_2 |>
  group_by(nivel_2) |>
  summarise(
    total_personas = sum(personas),
    total_censo = sum(censo),
  )

datos_cat_2 |>
  group_by(nivel_2) |>
  summarise(
    total_personas = sum(personas),
    total_censo = sum(censo),
    n_comunas = n()
  )

datos_cat_2


educacion <- read_xlsx("educacion.xlsx")

educacion |> glimpse()

educacion |>
  count(region)

educacion |>
  count(sexo)

educacion_2 <- educacion |>
  filter_out(region == "País") |>
  filter_out(sexo == "Total Comuna") |>
  filter_out(sexo == "Total País")

educacion_2 |>
  filter(comuna == "Puente Alto")

educacion |>
  filter(sexo == "Total Comuna") |>
  group_by(region) |>
  summarize(escolaridad = mean(escolaridad))


clasificacion <- read_xlsx("clasificacion.xlsx")

clasificacion_2 <- clasificacion |>
  select(comuna, clasificacion)

clasificacion_2

datos_cat |>
  left_join(clasificacion_2)

datos_cat
clasificacion_2

# arreglar las comunas de la tabla de clasificación
clasificacion_3 <- clasificacion_2 |>
  mutate(comuna = str_to_title(comuna)) |>
  mutate(comuna = str_replace(comuna, "O'higgins", "O’higgins"))

datos_cat |>
  filter(str_detect(comuna, "iggins"))

clasificacion_3 |>
  filter(str_detect(comuna, "iggins"))

# las dos tablas a cruzar
datos_cat

clasificacion_3

# revisar que son la misma cantidad
n_comunas_tabla_a <- datos_cat |>
  distinct(comuna) |>
  nrow()

n_comunas_tabla_b <- clasificacion_3 |>
  distinct(comuna) |>
  nrow()

n_comunas_tabla_a == n_comunas_tabla_b


# cruzar tablas
datos_cruce <- datos_cat |>
  left_join(clasificacion_3)

datos_cruce

datos_cruce

datos_cruce |>
  count(clasificacion)

datos_cruce |>
  distinct(clasificacion)

datos_cruce |>
  filter(is.na(clasificacion))

datos_cruce |>
  summarize(sum(personas))

datos_cruce |>
  group_by(clasificacion) |>
  summarize(sum(personas))


datos_cruce |>
  group_by(clasificacion)

datos_cruce |>
  mutate(total = sum(personas))

datos_cruce |>
  group_by(region) |>
  mutate(total = sum(personas))

datos_rank <- datos_cruce |>
  # select(region, personas) |>
  arrange(region, desc(personas)) |>
  group_by(region) |>
  mutate(ranking = 1:n()) |>
  ungroup() |>
  print(n = 40)

datos_rank |>
  filter(ranking <= 3)


datos_rank |>
  select(region, comuna, personas, clasificacion) |>
  pivot_wider(names_from = clasificacion, values_from = personas)
