У меня есть data.frame со столбцом «DATE», столбцом «ID» и столбцом «CLASSIFIER», следующим образом:
set.seed(11)
Data <- data.frame(
DATE = sample(seq(as.Date("2010-02-01"), length=12, by="1 month") - 1,50,replace = TRUE),
ID = sample(1:9,50,replace = TRUE),
CLASSIFIER = sample(c("yes", "no"), 50, replace = TRUE)
)
Вывод выглядит следующим образом:
DATE ID CLASSIFIER
1 2010-03-31 3 yes
2 2010-04-30 3 no
3 2010-04-30 4 no
4 2010-06-30 4 yes
5 2010-09-30 2 no
6 2010-11-30 5 no
Теперь я хотел бы получить список тех идентификаторов, чей классификатор меняется с одной даты на другую.Другими словами, я хочу получить список всех идентификаторов (включая соответствующую дату), которые меняются с "yes"
до "no"
или с "no"
до "yes"
с одного месяца до следующего.Для пояснения, от одного месяца к следующему я говорю строго в хронологическом порядке - ранжирование дат в фрейме data.frame должно быть неуместным.Таким образом, изменение для данного идентификатора может, например, произойти только в 2010-02-28, если существует запись для того же идентификатора в 2010-01-31 с противоположным CLASSIFIER.В идеале список также должен указывать природу изменения (т. Е. От "no"
до "yes"
или от "yes"
до "no"
) Из вышеприведенного примера вывода (первые две строки), если идентификатор "3" имеет"yes"
CLASSIFIER
2010-03-31 и "no"
CLASSIFIER
2010-04-30, в списке должны быть указаны идентификаторы «3», «2010-04-30» и что-то вроде «да - нет»».Идентификатор «4» в строках 3 и 4 не будет рассматриваться как изменение, потому что изменение не происходило от одного месяца к следующему в хронологическом порядке.
Кто-нибудь, пожалуйста, помогите мне с этим?
Заранее большое спасибо за помощь!
С уважением,
C.