У меня есть этот фрейм данных:
df<-structure(list(Name = c("sub1", "sub1", "sub1", "sub1", "sub1",
"sub1", "sub1", "sub1", "sub1", "sub1", "sub1", "sub1", "sub1",
"sub1", "sub1", "sub1", "sub1", "sub1", "sub1", "sub1", "sub1",
"sub1", "sub1", "sub2", "sub2", "sub2", "sub2", "sub2", "sub2"
), StimulusName = c("Alpha11", "Alpha11", "Alpha11", "Alpha11",
"Alpha11", "Alpha11", "Alpha11", "Alpha11", "Alpha11", "Alpha11",
"Alpha11", "Alpha11", "Alpha11", "Alpha11", "Alpha11", "Alpha11",
"Alpha11", "Alpha11", "Alpha12", "Alpha12", "Alpha12", "Alpha12",
"Alpha12", "Alpha11", "Alpha11", "Alpha11", "Alpha11", "Alpha11",
"Alpha11"), FixationSeq = c(2L, 2L, 2L, 2L, NA, NA, NA, NA, 3L,
3L, 3L, 3L, 3L, NA, NA, NA, NA, NA, 1L, NA, NA, 2L, NA, NA, NA,
NA, NA, 2L, 2L)), row.names = c(NA, -29L), class = c("tbl_df",
"tbl", "data.frame"), spec = structure(list(cols = list(Name = structure(list(), class = c("collector_character",
"collector")), StimulusName = structure(list(), class = c("collector_character",
"collector")), FixationSeq = structure(list(), class = c("collector_integer",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector"))), class = "col_spec"))
В столбце FixationSeq
есть уникальные числа (в моем примере 2 и 3 для Name
= sub1
и StimulusName
= Alpha11
). Между этими числами есть сегменты, заполненные NA
. Есть также сегмент после 3, заполненный NA
.
Я хотел бы иметь возможность создать новый столбец SaccadeCount
и добавить увеличивающуюся цифровую метку к каждому экземпляру NA
сегмента (в целом, то есть, возможно, нескольких строк) к соответствующему строки в SaccadeCount
.
Кроме того, я хотел бы иметь еще один столбец с именем SaccadeDuration
и общее количество строк, в которых появляются уникальные сегменты NA
. Таким образом, в примере df
строки, соответствующие сегменту NA
между 2 и 3, будут заполнены символом «3», поскольку это общее количество строк между 2 и 3.
Я хотел бы сделать это с помощью dplyr и сгруппировать операцию по столбцам Name
и StimulusName
.
Вывод может выглядеть примерно так:
Name StimulusName FixationSeq SaccadeCount SaccadeDuration
sub1 Alpha11 2
sub1 Alpha11 2
sub1 Alpha11 2
sub1 Alpha11 2
sub1 Alpha11 NA 1 3
sub1 Alpha11 NA 1 3
sub1 Alpha11 NA 1 3
sub1 Alpha11 3
sub1 Alpha11 3
sub1 Alpha11 3
sub1 Alpha11 3
sub1 Alpha11 3
sub1 Alpha11 3
sub1 Alpha11 NA 2 5
sub1 Alpha11 NA 2 5
sub1 Alpha11 NA 2 5
sub1 Alpha11 NA 2 5
sub1 Alpha11 NA 2 5
sub1 Alpha12 1
sub1 Alpha12 NA 1 2
sub1 Alpha12 NA 1 2
sub1 Alpha12 2
sub1 Alpha12 NA 2 1
sub2 Alpha11 NA 1 4
sub2 Alpha11 NA 1 4
sub2 Alpha11 NA 1 4
sub2 Alpha11 NA 1 4
sub2 Alpha11 2
sub2 Alpha11 2
Большое спасибо за ваше время и помощь.