У меня есть результаты теста, проведенного несколькими людьми в целых четыре периода времени. Вот пример:
dat <- structure(list(Participant_ID = c("A", "A", "A", "A", "B", "B",
"B", "B", "C", "C", "C", "C"), phase = structure(c(1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("base", "sixmos",
"twelvemos", "eighteenmos"), class = "factor"), result = c("Negative",
"Negative", "Negative", "Negative", "Negative", "Positive", "Negative",
NA, "Positive", "Indeterminate", "Negative", "Negative")), .Names = c("Participant_ID",
"phase", "result"), row.names = c(1L, 2L, 3L, 4L, 97L, 98L, 99L,
100L, 9L, 10L, 11L, 12L), class = c("cast_df", "data.frame"))
который выглядит так:
Participant_ID phase result
1 A base Negative
2 A sixmos Negative
3 A twelvemos Negative
4 A eighteenmos Negative
97 B base Negative
98 B sixmos Positive
99 B twelvemos Negative
100 B eighteenmos <NA>
9 C base Positive
10 C sixmos Indeterminate
11 C twelvemos Negative
12 C eighteenmos Negative
Я хотел бы добавить идентификатор к каждому тесту, чтобы отметить, был ли этот тест преобразованием из предыдущего статуса (отрицательного в положительный), возвратом (положительным в отрицательный) или стабильным. Подвох в том, что я не просто сравниваю базовый тест с тестом на шесть месяцев, шесть месяцев с тестом на двенадцать месяцев и т. д. — в таких случаях, как C, тест sixmos должен быть помечен как стабильный или неубедительный (точный термин для этого — неоднозначный), и (что более важно) тест двенадцатимосов затем следует сравнить с базовым тестом и пометить как реверсию. И наоборот, если у кого-то была последовательность «Отрицательный», «Неопределенный», «Отрицательный», она должна быть стабильной.
Это последняя часть, на которой я застрял; если бы это была просто последовательность сравнений для каждого участника, все было бы в порядке, но я не могу придумать, как элегантно справиться с этими парами сравнения переменных. Ваша помощь, как всегда, очень ценится.