gpt4 book ai didi

r - 计算R中向量中重复数字序列的长度

转载 作者:行者123 更新时间:2023-12-04 01:01:55 24 4
gpt4 key购买 nike

数据如下:

marker <- c(0,0,0,0,3,3,0,0,5,5,5,0,0,0,
1,1,2,2,2,2,0,0,1,1,1,3,3,3,
1,1,2,2,2,0,0,1,1,1,5,5,5,5)

这些标记显示参与者在眼动追踪研究期间所做的事情,例如 0 = 无试验,1 = 试验开始,2、3、5 = 不同类型的任务。第一个1之前的数据为眼动仪测试,可以舍弃。

我需要做什么(最好使用 dplyr):

  1. 删除第一个之前的数据
  2. 计算每个重复数序列的长度(n_samples)
  3. 将 ID 编号分配给试验,将 0 分配给无试验和试验开始 (trial_number)

期望的输出:

marker  n_samples  trial_number
1 2 0
1 2 0
2 4 1
2 4 1
2 4 1
2 4 1
0 2 0
0 2 0
1 3 0
1 3 0
1 3 0
3 3 2
3 3 2
3 3 2
1 2 0
1 2 0
2 3 3
2 3 3
2 3 3
0 2 0
0 2 0
1 3 0
1 3 0
1 3 0
5 4 4
5 4 4
5 4 4
5 4 4

我找到了 this回答,但无法修改代码以适应我的任务。

谢谢!

最佳答案

使用dplyrdata.tablerleid 函数。

library(dplyr)

tibble(marker) %>%
#Drop rows before first 1
filter(row_number() >= match(1, marker)) %>%
#Count samples in each group
add_count(grp = data.table::rleid(marker), name = 'n_samples') %>%
#Create trial number
mutate(trial_number = with(rle(!marker %in% c(1, 0)),
rep(cumsum(values) * values, lengths))) %>%
select(-grp)

返回 -

#   marker n_samples trial_number
#1 1 2 0
#2 1 2 0
#3 2 4 1
#4 2 4 1
#5 2 4 1
#6 2 4 1
#7 0 2 0
#8 0 2 0
#9 1 3 0
#10 1 3 0
#11 1 3 0
#12 3 3 2
#13 3 3 2
#14 3 3 2
#15 1 2 0
#16 1 2 0
#17 2 3 3
#18 2 3 3
#19 2 3 3
#20 0 2 0
#21 0 2 0
#22 1 3 0
#23 1 3 0
#24 1 3 0
#25 5 4 4
#26 5 4 4
#27 5 4 4
#28 5 4 4

关于r - 计算R中向量中重复数字序列的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68062940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com