Шаг 1: Получите идентификаторы, которые имели переменную = 30 в неделю1
res<- subset( df,Variable==30 & Week==1, ID )
Вывод:
> res
ID
1 A
7 C
Шаг 2: Получить все их переменные на неделе 2:
dt<-subset(df,ID %in% as.vector(unlist(res)) & Week==2 ,select=c(ID,Variable))
Вывод:
ID Variable
2 A 25
8 C 50
Шаг 3: Получите среднее значение:
mean(dt$Variable)
Окончательный результат:
37.5
На шаге 2 мы имеем ID %in% as.vector(unlist(res))
. Итак, что это значит?
% in% part просто является оператором, который возвращает true, если находит идентификатор внутри правого бокового вектора. Например,запустите приведенный ниже пример:
a<- 1:10
b<-c(0,4,6,8,16)
b %in% a
и получите результат:
FALSE TRUE TRUE TRUE FALSE
Итак, оператор% in% возвращает логическое значение для каждого элемента b
. Результатом будет True, если этот элемент существует в a
, в противном случае возвращается False .Как вы видите, 0 и 16 имеют значение False.
Но дело в том, что a
должно быть вектором, в то время как res
является data.frame
, поэтому мне нужно сначала unlist
его, а затемрассмотрим его как vector
(as.vector
).
В заключение ID %in% as.vector(unlist(res))
проверяет, существует ли каждый идентификатор в res или нет.