R 跨布尔值扫描窗口,返回最大窗口
我有一份参与者名单,每个人有10次测量。为每个测量场合指定一个布尔值。我想扫描“boolean”列,一次扫描4个测量值(1->4,2->5,3->6,等等)。我想找出哪个窗口中的“1”值最大,结果存储在“MaxWindow”列中 下面提供了其外观的示例: 注意:如果可以在多个窗口中观察到最大值,我只想在扫描中取最远的窗口R 跨布尔值扫描窗口,返回最大窗口,r,R,我有一份参与者名单,每个人有10次测量。为每个测量场合指定一个布尔值。我想扫描“boolean”列,一次扫描4个测量值(1->4,2->5,3->6,等等)。我想找出哪个窗口中的“1”值最大,结果存储在“MaxWindow”列中 下面提供了其外观的示例: 注意:如果可以在多个窗口中观察到最大值,我只想在扫描中取最远的窗口 非常感谢您的帮助。您可以使用zoo中的rollsumr获取特定窗口大小的滚动总和,并使用选择最后一个最大值,该值+max为每个参与者创建maxwindow列 library(
非常感谢您的帮助。您可以使用
zoo
中的rollsumr
获取特定窗口大小的滚动总和,并使用选择最后一个最大值,该值+max
为每个参与者创建maxwindow
列
library(dplyr)
win_size <- 4
df %>%
group_by(Participant) %>%
mutate(sum = zoo::rollsumr(Boolean, win_size, fill = NA),
maxwindow = {i <- max(which(sum == max(sum, na.rm = TRUE)));
paste(i - win_size + 1, i, sep = '-')})
# Participant Measurmeant Boolean sum maxwindow
# <dbl> <int> <dbl> <dbl> <chr>
# 1 1 1 1 NA 5-8
# 2 1 2 1 NA 5-8
# 3 1 3 0 NA 5-8
# 4 1 4 0 2 5-8
# 5 1 5 1 2 5-8
# 6 1 6 1 2 5-8
# 7 1 7 1 3 5-8
# 8 1 8 0 3 5-8
# 9 1 9 0 2 5-8
#10 1 10 0 1 5-8
库(dplyr)
win_大小%
分组依据(参与者)%>%
mutate(sum=zoo::rollsumr(布尔,win_size,fill=NA),
maxwindow={i您可以使用zoo
中的rollsumr
获取特定窗口大小的滚动和,并使用选择最后一个最大值,该值+max
为每个参与者创建maxwindow
列
library(dplyr)
win_size <- 4
df %>%
group_by(Participant) %>%
mutate(sum = zoo::rollsumr(Boolean, win_size, fill = NA),
maxwindow = {i <- max(which(sum == max(sum, na.rm = TRUE)));
paste(i - win_size + 1, i, sep = '-')})
# Participant Measurmeant Boolean sum maxwindow
# <dbl> <int> <dbl> <dbl> <chr>
# 1 1 1 1 NA 5-8
# 2 1 2 1 NA 5-8
# 3 1 3 0 NA 5-8
# 4 1 4 0 2 5-8
# 5 1 5 1 2 5-8
# 6 1 6 1 2 5-8
# 7 1 7 1 3 5-8
# 8 1 8 0 3 5-8
# 9 1 9 0 2 5-8
#10 1 10 0 1 5-8
库(dplyr)
win_大小%
分组依据(参与者)%>%
mutate(sum=zoo::rollsumr(布尔,win_size,fill=NA),
maxwindow={i