Я пытаюсь рассчитать процентную разницу в ht между всеми возможными парами данных для каждой группы лиц, а также разницу во времени между показателями ht. Это мои данные:
hc1<- data.frame(id= c(1,1,1,2,2,2,3,3),
testoccasion= c(1,2,3,1,2,3,1,2),
ht= c(0.2,0.1,0.8,0.9,1.0,0.5,0.4,0.8),
time= c(5,4,8,5,6,5,2,1))
Это мой код.
library(dplyr)
a<-hc1 %>%
group_by(id) %>%
arrange(id,testoccasion) %>%
mutate(fd = (ht-lag(ht))/lag(ht)*100) %>%
mutate(t = time-lag(time))
b<-hc1 %>%
group_by(id) %>%
arrange(id,testoccasion) %>%
mutate(fd = (ht-lag(ht,2))/lag(ht,2)*100) %>%
mutate(t = time-lag(time,2))
c<-hc1 %>%
group_by(id) %>%
arrange(id,testoccasion) %>%
mutate(fd = (ht-lag(ht,3))/lag(ht,3)*100) %>%
mutate(t = time-lag(time,3))
diff<-rbind(a,b,c)
diff<-na.omit(diff)
Мне любопытно, как я могу сделать этот код короче. Я хочу, чтобы можно было найти разницу по всем возможным парам ht для всех тестовых случаев, где количество тестовых тестов различается для отдельных идентификаторов. Было бы здорово, если бы мне не приходилось делать это итеративно, как это, потому что это огромный набор данных, который у меня есть. Спасибо!