Я пытаюсь отфильтровать идентификаторы на основе указанных условий.Например, я хочу отфильтровать идентификаторы, которые имеют особую разницу в баллах анкеты от до и после лечения.Идея состоит в том, чтобы получить идентификаторы, которые улучшились в баллах, остались прежними или ухудшились.Вот фиктивный набор данных о том, чего я пытаюсь достичь: -
ID<-c("aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","aaa","bbb","ccc","aaa","bbb","ccc")
Condition<-c("Pre","Pre","Pre","Pre","Pre","Pre","Pre","Pre","Pre","Post","Post","Post","Post","Post","Post","Post","Post","Post","Pre","Pre","Pre","Post","Post", "Post")
Score<-c(23,20,19,15,22,22,20,19,18,17,17,19,20,22,22,14,15,10,23,23,21,20,18,11)
df<-cbind(ID,Condition,Score)
df<-as.data.frame(df)
df$Condition<-as.factor(df$Condition)
Основная проблема здесь заключается в том, что есть идентификаторы, которые появляются в данных, как до, так и после, дважды.
Я попытался использовать решение dplyr
, чтобы выбрать соответствующие столбцы из основного фрейма данных, а затем использовать tidyverse
и функцию spread
для преобразования в широкоформатный формат, потому что оттуда я могуВыяснить различия достаточно легко.Однако есть определенная проблема, с которой я столкнулся.Это не будет работать, потому что есть повторяющиеся случаи, когда идентификатор снова появляется в данных (например, идентификаторы aaa, bbb & ccc).
df2<-df%>%
group_by(ID)%>%
spread(Condition, Score)
Это приводит меня к следующему сообщению об ошибке: -
Ошибка: каждая строка вывода должна быть идентифицирована уникальной комбинацией клавиш.Ключи разделены на 12 строк: * 10, 22 * 11, 23 * 12, 24 * 1, 19 * 2, 20 * 3, 21 Вам нужно создать уникальный идентификатор с помощью tibble :: rowid_to_column ()?
В идеале, результат, который я бы искал, выглядит примерно так: -
#improved
ID Pre Post Difference
aaa 23 17 -6
bbb 20 17 -3
ggg 20 14 -6
hhh 19 15 -4
iii 18 10 -8
aaa 23 20 -3
bbb 23 18 -5
ccc 21 11 -10
#no improvement
ID Pre Post Difference
ccc 19 19 0
eee 22 22 0
fff 22 22 0
#worsened
ID Pre Post Difference
ddd 15 20 +5
Или что-то в этом роде.Пока это позволяет мне включать повторные идентификаторы.В идеале я хотел бы иметь возможность дополнительно фильтровать по разнице.Так, например, если я хочу установить / отфильтровать идентификаторы с улучшенной оценкой более 5 или с ухудшенной оценкой более 5. Не забывайте, у моего фактического набора данных будет гораздо больше идентификаторов для работы, чем в примере, которыйЯ просто помирился и обеспечил.Любая помощь будет принята с благодарностью, как всегда.
Заранее спасибо:)