Week 5: Movement Patterns

Author

Selina Lepori

Task 1: Write your own functions

fun_bmi <- function(weight_kg, height_m) {
  # browser() # go into function in terminal
  bmi = weight_kg / height_m**2
  return(bmi)
}

fun_C_to_F <- function(C) {
  F_ = C * 9/5 + 32
  return(f_)
}

fun_ED <- function(x1, x2, y1, y2) {
  ED = as.integer(sqrt((x2-x1)^2 + (y2-y1)^2))
}

Task 2: Prepare Analysis

data <- read_delim("data/wildschwein_BE_2056.csv", delim=",")

data_sample <- data |>
  filter(TierName != "Ruth",
         DatetimeUTC >= as.POSIXct("2015-04-01", tz = "UTC"),
         DatetimeUTC < as.POSIXct("2015-04-15", tz = "UTC"))

Task 3: Create Join Key

data_sample$DatetimeRound <- round_date(data_sample$DatetimeUTC, "15 mins")

Task 4: Measuring distance at concurrent locations

Split data frame to one per animal.

data_list <- split(x=data_sample, f=data_sample$TierName)  # split by TierName

list2env(data_list, envir=.GlobalEnv)  # assign each element as a separate data frame
<environment: R_GlobalEnv>

Join data sets by new datetime column.

data2 <- inner_join(Rosa, Sabi, by="DatetimeRound")

Calculate Euclidean Distances.

data2$ED <- fun_ED(x1=data2$E.x, x2=data2$E.y, y1=data2$N.x, y2=data2$N.y)

Determine if the animals are spatially close enough to constitute a meet.

threshold = 100

data2 <- data2 |>
    mutate(meet = ED <= threshold)

Task 5: Visualise data

Filter for meeting data points.

data2_filter <- data2 |>
  filter(meet)

Task 6: Plotly