Я обновил вопрос, так как а) я сформулировал вопрос непонятно с первой попытки, б) моя точная потребность также немного изменилась.Выберите последовательные записи даты
Я хочу особо поблагодарить Хеммо за большую помощь до сих пор - и извинения за то, что я недостаточно ясно сформулировал свой вопрос. Его код (который касается более ранней версии проблемы) показан в разделе ответа.
На высоком уровне - я ищу код, который помогает идентифицировать и различать различные блоки последовательного свободного времени разных людей. Более конкретно - код в идеале:
- Проверить whehter деятельность помечена как «Free»
- Проверьте ли последовательные недели (на неделю раньше, неделю позже) время, затрачиваемого одним и тем же лицом, где также помечен как " Свободно".
- Дайте весь блок последовательных недель этого человека, помеченных как «Свободный» индикатор в желаемом столбце результата. Обратите внимание, что длина периодов времени (например, 1 неделя consec, 4 недели consec, 8 consec weeks) будет изменяться
- Наконец, из-за необходимости дальнейшего анализа характеристик этих кластеров различные блоки должны получать разные индикаторы. (Например, марш блок Павла будет иметь значение 1, значение мая блок 2 и блок Кима в марте будет иметь значение 3)
Надеюсь, это становится более ясным, когда один смотрит на примере dataframe (см желаемая итоговая колонка)
Любая помощь, которую высоко оценили, код для тестового блока данных ниже.
Большое спасибо заранее,
Вт
примера (обратите внимание, что последний столбец должен быть сформирован с помощью кода, чисто включены в качестве иллюстрации):
Week Name Activity Hours Desired_Outcome
1 01/01/2013 Paul Free 40 1
2 08/01/2013 Paul Free 10 1
3 08/01/2013 Paul Project A 30 0
4 15/01/2013 Paul Project B 30 0
5 15/01/2013 Paul Project A 10 0
6 22/01/2013 Paul Free 40 2
7 29/01/2013 Paul Project B 40 0
8 05/02/2013 Paul Free 40 3
9 12/02/2013 Paul Free 10 3
10 19/02/2013 Paul Free 30 3
11 01/01/2013 Kim Project E 40 0
12 08/01/2013 Kim Free 40 4
13 15/01/2013 Kim Free 40 4
14 22/01/2013 Kim Project E 40 0
15 29/01/2013 Kim Free 40 5
код для dataframe:
Name=c(rep("Paul",10),rep("Kim",5))
Week=c("01/01/2013","08/01/2013","08/01/2013","15/01/2013","15/01/2013","22/01/2013","29/01/2013","05/02/2013","12/02/2013","19/02/2013","01/01/2013","08/01/2013","15/01/2013","22/01/2013","29/01/2013")
Activity=c("Free","Free","Project A","Project B","Project A","Free","Project B","Free","Free","Free","Project E","Free","Free","Project E","Free")
Hours=c(40,10,30,30,10,40,40,40,10,30,40,40,40,40,40)
Desired_Outcome=c(1,1,0,0,0,2,0,3,3,3,0,4,4,0,5)
df=as.data.frame(cbind(Week,Name,Activity,Hours,Desired_Outcome))
df
Это все еще неясно, что ваши выходные средства. Не могли бы вы рассказать? – flodel