在一个时间序列中,如何列出自每个焦点事件的一定延迟以来发生的所有事件? [关闭]

问题描述 投票:0回答:0
在示例数据集中,每个感兴趣的延迟都有一个列。例如,LAT_1变量包含在焦点行为之前最多1秒的前行(即,在给定延迟[列]处的当前行与当前行相关的几行)。
对于以后的步骤,重要的是:

cases不可能的影响(即,当延迟大于行为的启动时间时,在相应的延迟列中发生NA时发生的行为的起始时间)如下(在当前情况“ Y”)时,

cases在潜伏期内没有其他行为(即,在相应的延迟列中有0时)被标识为(在当前情况“ z”)和

对于任何其他情况,所有以前的人的列表都被报告为字符串。

到目前为止,我的代码是我到目前为止的代码。欢迎任何帮助:-)

library(tidyverse) LD_SO <- data.frame(Group = "Gr02", Individual = c("B", "A", "B", "B", "A", "A", "C", "A", "B", "C", "A", "A", "C", "A", "A", "A", "B", "C"), Event_type = "Behaviour1", Start_cor = c(2.25, 2.8, 5.9, 6.1, 30.56, 33.45, 34.12, 35.49, 49.78, 54.89, 55.12, 59.24, 136.45, 137, 138.49, 140.21, 141.73, 200.24), Lat_1 = c(0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L), Lat_2 = c(0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L), Lat_3 = c(NA, NA, 0L, 1L, 0L, 1L, 1L, 2L, 0L, 0L, 1L, 0L, 0L, 0L, 2L, 1L, 1L, 0L), Lat_4 = c(NA, NA, 2L, 3L, 0L, 1L, 2L, 2L, 0L, 0L, 1L, 0L, 0L, 0L, 2L, 3L, 2L, 0L), Lat_5 = c(NA, NA, 2L, 3L, 0L, 1L, 2L, 3L, 0L, 0L, 1L, 2L, 0L, 0L, 2L, 3L, 3L, 0L), Lat_6 = c(NA, NA, NA, 3L, 0L, 1L, 2L, 3L, 0L, 1L, 2L, 2L, 0L, 0L, 2L, 3L, 4L, 0L), Lat_7 = c(NA, NA, NA, NA, 0L, 1L, 2L, 3L, 0L, 1L, 2L, 2L, 0L, 0L, 2L, 3L, 4L, 0L)) ### # first step: list all relevant previous individuals ### # the values in Lat_1:Lat_7 indicate how many previous events took place within a certain latency [1 to 7 seconds] LD_SO_step1 <- LD_SO %>% mutate( # Identify all relevant previous individuals up to 1 second before the focal behaviour Infl_1 = case_when(is.na(Lat_1) ~ "Y", # in order to transform NAs into specific letter for later Lat_1 == 0 ~ "Z", # in order to indicate that nobody started the behaviour within that latency Lat_1 == 1 ~ paste0(lag(Individual, 1)), # retrieve the identity of the person performing the previous behaviour Lat_1 == 2 ~ paste0(lag(Individual, 1), lag(Individual, 2)), # retrieve the identity of the persons performing the two previous behaviours Lat_1 == 3 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3)), # retrieve the identity of the persons performing the three previous behaviours Lat_1 == 4 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3), lag(Individual, 4))), # and so on # Identify all relevant previous individuals up to 2 seconds before the focal behaviour Infl_2 = case_when(is.na(Lat_2) ~ "Y", Lat_2 == 0 ~ "Z", Lat_2 == 1 ~ paste0(lag(Individual, 1)), Lat_2 == 2 ~ paste0(lag(Individual, 1), lag(Individual, 2)), Lat_2 == 3 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3)), Lat_2 == 4 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3), lag(Individual, 4))), # Identify all relevant previous individuals up to 3 seconds before the focal behaviour Infl_3 = case_when(is.na(Lat_3) ~ "Y", Lat_3 == 0 ~ "Z", Lat_3 == 1 ~ paste0(lag(Individual, 1)), Lat_3 == 2 ~ paste0(lag(Individual, 1), lag(Individual, 2)), Lat_3 == 3 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3)), Lat_3 == 4 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3), lag(Individual, 4))), # and so on Infl_4 = case_when(is.na(Lat_4) ~ "Y", Lat_4 == 0 ~ "Z", Lat_4 == 1 ~ paste0(lag(Individual, 1)), Lat_4 == 2 ~ paste0(lag(Individual, 1), lag(Individual, 2)), Lat_4 == 3 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3)), Lat_4 == 4 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3), lag(Individual, 4))), Infl_5 = case_when(is.na(Lat_5) ~ "Y", Lat_5 == 0 ~ "Z", Lat_5 == 1 ~ paste0(lag(Individual, 1)), Lat_5 == 2 ~ paste0(lag(Individual, 1), lag(Individual, 2)), Lat_5 == 3 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3)), Lat_5 == 4 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3), lag(Individual, 4))), Infl_6 = case_when(is.na(Lat_6) ~ "Y", Lat_6 == 0 ~ "Z", Lat_6 == 1 ~ paste0(lag(Individual, 1)), Lat_6 == 2 ~ paste0(lag(Individual, 1), lag(Individual, 2)), Lat_6 == 3 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3)), Lat_6 == 4 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3), lag(Individual, 4))), Infl_7 = case_when(is.na(Lat_7) ~ "Y", Lat_7 == 0 ~ "Z", Lat_7 == 1 ~ paste0(lag(Individual, 1)), Lat_7 == 2 ~ paste0(lag(Individual, 1), lag(Individual, 2)), Lat_7 == 3 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3)), Lat_7 == 4 ~ paste0(lag(Individual, 1), lag(Individual, 2), lag(Individual, 3), lag(Individual, 4))), .after = Individual)

  • 该解决方案在行上迭代,将您的逻辑应用于相对于每一行中给定延迟内事件的个人。
  • library(purrr) library(dplyr) compute_IT <- function(individual, time, latency) { map2_chr(individual, time, \(indiv_i, time_i) { latencies <- time_i - time influencers <- unique(individual[latencies > 0 & latencies <= latency]) n_influencers <- length(influencers) if (indiv_i %in% influencers) { paste0("Self_", n_influencers - 1) } else if (n_influencers > 0) { paste0("Other_", n_influencers) } else { "NoOne_0" } }) } for (i in seq(7)) { LD_SO <- mutate( LD_SO, "IT_{i}" := compute_IT(Individual, Start_cor, latency = i), .by = c(Group, Event_type) ) }
  • #> select(LD_SO, c(Individual, Start_cor, IT_1:IT_7)) Individual Start_cor IT_1 IT_2 IT_3 IT_4 IT_5 IT_6 IT_7 1 B 2.25 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 2 A 2.80 Other_1 Other_1 Other_1 Other_1 Other_1 Other_1 Other_1 3 B 5.90 NoOne_0 NoOne_0 NoOne_0 Self_1 Self_1 Self_1 Self_1 4 B 6.10 Self_0 Self_0 Self_0 Self_1 Self_1 Self_1 Self_1 5 A 30.56 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 6 A 33.45 NoOne_0 NoOne_0 Self_0 Self_0 Self_0 Self_0 Self_0 7 C 34.12 Other_1 Other_1 Other_1 Other_1 Other_1 Other_1 Other_1 8 A 35.49 NoOne_0 Other_1 Self_1 Self_1 Self_1 Self_1 Self_1 9 B 49.78 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 10 C 54.89 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 Other_1 Other_1 11 A 55.12 Other_1 Other_1 Other_1 Other_1 Other_1 Other_2 Other_2 12 A 59.24 NoOne_0 NoOne_0 NoOne_0 NoOne_0 Self_1 Self_1 Self_1 13 C 136.45 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 14 A 137.00 Other_1 Other_1 Other_1 Other_1 Other_1 Other_1 Other_1 15 A 138.49 NoOne_0 Self_0 Self_1 Self_1 Self_1 Self_1 Self_1 16 A 140.21 NoOne_0 Self_0 Self_0 Self_1 Self_1 Self_1 Self_1 17 B 141.73 NoOne_0 Other_1 Other_1 Other_1 Other_1 Other_2 Other_2 18 C 200.24 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0 NoOne_0

r dplyr data-wrangling
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.