Skip to content

Instantly share code, notes, and snippets.

@jonspring
Created November 7, 2024 06:08
Show Gist options
  • Save jonspring/09062f2bd4be4869460138d8d8a75f74 to your computer and use it in GitHub Desktop.
Save jonspring/09062f2bd4be4869460138d8d8a75f74 to your computer and use it in GitHub Desktop.
library(tidyverse)
files = c(
fs::dir_ls("~/Downloads/Shelter1_Tension_files"),
fs::dir_ls("~/Downloads/Shelter_2_Tension_files"))
doggies <- data.frame(file = files) |>
mutate(data = map(files,
~readxl::read_excel(.x, range = "A1:D5000"))) |>
unnest_legacy(data) |>
filter(!is.na(Date)) |>
# filter()
mutate(datetime = ymd_h(paste(Date, "00")) + hour(Time)*60*60 + minute(Time)*60 +
second(Time)) |>
mutate(`Averaged Newtons` = coalesce(`Averaged Newtons`, Averaged, `averaged newtons`, `average newtons`, `Averaged newtons`)) |>
mutate(filename = fs::path_file(file)) |>
separate(filename, c("Dog", "collar", "stamp"), sep = "_") |>
mutate(time_adj = datetime - min(datetime), .by = Dog) |>
mutate(time_adj2 = datetime - min(datetime), .by = c(Dog, collar)) |>
mutate(collar_count = n_distinct(collar[!is.na(`Averaged Newtons`)]), .by = Dog) |>
mutate(Dog = fct_reorder(Dog, datetime) |> fct_rev()) |>
mutate(collar = fct_reorder(collar, time_adj))
dog_deets <- tibble::tribble(
~Name, ~`Age_mo`, ~Shelter.breed.estimate, ~`Weight_kg`, ~Shelter,
"Dominic", 60L, "German shepherd", 34.02, 1L,
"Duke", 84L, "Rottweiler/German shepherd mix", 30.26, 1L,
"Harley", 36L, "Doberman mix", 28.71, 1L,
"Mr. Fitz", 108L, "Pit bull mix", 19.5, 1L,
"Ranger", 12L, "Australian cattle dog mix", 23.32, 1L,
"Royal", 60L, "Pit bull mix", 31.12, 1L,
"Sunny", 20L, "German shepherd/husky mix", 15.12, 1L,
"Bubba", 19L, "Pit bull mix", 26.68, 1L,
"Daisy", 72L, "German short haired pointer/pit bull mix", 25.22, 1L,
"Mars", 60L, "Pit bull mix", 26.17, 1L,
"Sulley", 12L, "Mastiff mix", 26.26, 1L,
"Buzz", 10L, "Husky mix", 17.92, 1L,
"Jake", 10L, "German shepherd", 24.04, 1L,
"Saint", 24L, "German shepherd", 33.57, 1L,
"Juju", 84L, "Husky mix", 26.76, 1L,
"KimChi", 36L, "Siberian husky/German shepherd mix", 20.87, 2L,
"Mrs. Potato head", 60L, "Pit bull mix", 28.58, 2L,
"Reggie", 60L, "Pit bull mix", 37.65, 2L,
"Richa", 120L, "Presa canario/giant schnauzer", 43.09, 2L,
"Ursula", 13L, "Pit bull mix", 20.41, 2L,
"Boris", 24L, "Doberman", 41.5, 2L,
"Klutz", 12L, "Belgian malinois mix", 33.57, 2L,
"Tyr", 48L, "German shepherd", 42.64, 2L
)
doggies |>
left_join(dog_deets, join_by(Dog == Name)) |> view()
doggies |>
ggplot(aes(datetime, Dog, color = collar, size = `Averaged Newtons`)) +
geom_point() +
scale_size_area()
doggies |>
left_join(dog_deets, join_by(Dog == Name)) |>
filter(!is.na(Weight_kg)) |>
arrange(Weight_kg, Dog) |>
mutate(Dog = paste0(Dog, "\n", round(Weight_kg), "kg ", coalesce(Shelter.breed.estimate,"")) |> fct_inorder()) |>
# filter(collar_count == 4) |>
ggplot(aes(time_adj2/60, Dog, fill = collar, height = `Averaged Newtons`)) +
ggridges::geom_ridgeline(scale = 1/80, linewidth = 0.2) +
theme_minimal() +
scale_x_continuous(minor_breaks = NULL) +
facet_grid(.~collar, scales = "free_y", space = "free_y") +
labs(title = "Average pulling force during a 5min walk",
y = NULL, x = NULL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment