У меня есть этот фрейм данных:
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", "Sub1", "Sub1", "Sub1", "Sub1", "Sub1", "Sub1", "Sub1", "Sub1", "Sub1",
"Sub1", "Sub1", "Sub1", "Sub1", "Sub1", "Sub1", "Sub1", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2",
"Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2",
"Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2", "Sub2"),
StimulusName = c("Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1",
"Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2",
"Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2",
"Stim2", "Stim2", "Stim2", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1",
"Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim1", "Stim2",
"Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2",
"Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2", "Stim2"),
Fixation = c(NA, NA, 1L, 1L, NA, NA, 2L, 2L, 3L, 3L, NA, NA, NA, NA, NA, 4L, 4L, 5L, 5L, NA, NA, NA, NA, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, NA, NA, NA, 3L, 3L, 3L, NA, NA, NA, NA, NA, NA, 1L, 1L, 1L, 1L, 2L, 2L, NA, NA, 3L, 3L, 3L, 4L, 4L, 4L, NA, NA, 1L, 1L, NA,
NA, 2L, 2L, 3L, 3L, NA, NA, NA, NA, NA, 4L, 4L, 5L, 5L, NA)),
row.names = c(NA, -79L), class = c("tbl_df", "tbl", "data.frame"))
Есть 3 столбца: Name
, StimulusName
и Fixation
.
Я бы хотел иметь возможность вернуть номер строки для первых примеров уникальных значений в столбце Fixation
и сгруппировать их по Name
и StimulusName
.
Вот что я пробовал до сих пор (основываясь на частичном решении, найденном в другом месте):
# function to return rows
Unique_Indices <- function(Values){
unik <- !duplicated(Values) ## logical vector of unique values
return(seq_along(Values)[unik]) ## indices
}
Но когда я использую его с цепочкой dplyr, он не возвращает исходные номера строк, а наоборот начинает отсчет строк заново с помощью группировки:
library(tidyr)
# This doesn't work
Unique_Index <- df %>%
group_by(Name, StimulusName) %>%
summarise(Indices = list(Unique_Indices(Fixation))) %>%
unnest()
Неправильный вывод выглядит так:
Вы можете видеть, что Indices
не содержит исходных номеров строк после перехода на следующие StimulusName
взносы к инструкции group_by
. Есть ли способ, которым я могу group_by
, как я желаю, сохранив исходный номер строки из df
?