Я хочу выбрать минимум Timepoint
, максимум Timepoint
и продолжительность (разница между максимальным и минимальным), сгруппированные по Replicate
, Stimulus
, Attribute
и Complexity
structure(list(Replicate = c(1L, 1L, 1L, 1L, 1L, 1L), Stimulus = c(1L,
1L, 1L, 1L, 1L, 1L), Subject = c("S001", "S001", "S001", "S001",
"S001", "S001"), Attribute = c("Soft", "Soft", "Soft", "Soft",
"Soft", "Soft"), Timepoint = c(0.77, 0.78, 0.79, 0.8, 0.81, 0.82
), Dominant = c(1L, 1L, 1L, 1L, 1L, 1L), Complexity = c(2L, 2L,
2L, 2L, 2L, 2L)), row.names = c(NA, 6L), class = "data.frame")
Я использую следующий код
modified_tds_merged2<-tds_merged.df %>%
as.data.frame() %>%
mutate(Timepoint = as.numeric(gsub("[a-zA-Z]+", "", Timepoint))) %>%
group_by(Replicate, Stimulus, Subject, Attribute, Complexity) %>%
summarise(
start_time = min(Timepoint),
end_time = max(Timepoint),
duration = end_time - start_time,
n = n()
) %>%
ungroup()
Однако результат неверен, время окончания часто неверно, так как они перекрываются, когда может быть только 1 Complexity
рейтинг при любом timepoint
, и кажется случайный. Вот пример результата. Вы можете видеть, что для S008, crumbly_particles, Complexity
рейтинг 3 идет от 0.47 to 0.7
1, а Complexity
рейтинг 4 идет от 0.51 to 0.66
. Когда я снова проверяю tds_merged.df
, Complexity
рейтинг 3 должен быть от .47 to.50
и .67 to .71
, а Complexity
рейтинг 4 - от .51 to .66
, что правильно. Похоже, что в моем коде не указано, что если рейтинг Complexity
изменится с 3 на 4 и обратно на 3, то необходимо будет тщательно рассчитать два рейтинга 3.
structure(list(Replicate = c(1L, 1L, 1L, 1L, 1L, 1L), Stimulus = c(1L,
1L, 1L, 1L, 1L, 1L), Subject = c("S001", "S004", "S004", "S008",
"S008", "S008"), Attribute = c("Soft", "Crumbly_Particles", "Soft",
"Crumbly_Particles", "Crumbly_Particles", "Crunchy"), Complexity = c(2L,
2L, 2L, 3L, 4L, 2L), start_time = c(0.77, 0.95, 0.19, 0.47, 0.51,
0.79), end_time = c(0.99, 0.99, 0.94, 0.71, 0.66, 0.82), duration = c(0.22,
0.04, 0.75, 0.24, 0.15, 0.0299999999999999), n = c(23L, 5L, 76L,
9L, 16L, 4L)), row.names = c(NA, -6L), class = c("tbl_df", "tbl",
"data.frame"))
Простите за долгое время " вопрос"!! Надеюсь, кто-то может помочь. Может быть, проблема в использовании max и min, есть ли еще одна функция, я новичок в R?