У меня есть образец dataframe, что я работаю сРасчет интенсивности отказов и времени манипуляции даты в R
Datetime <- c("2015-09-29 08:22:00", "2015-09-29 09:45:00", "2015-09-29 09:53:00", "2015-09-29 10:22:00", "2015-09-29 10:42:00",
"2015-09-29 11:31:00", "2015-09-29 11:47:00", "2015-09-29 12:45:00", "2015-09-29 13:11:00", "2015-09-29 13:44:00",
"2015-09-29 15:24:00", "2015-09-29 16:28:00", "2015-09-29 20:22:00", "2015-09-29 21:38:00", "2015-09-29 23:34:00")
Measurement <- c("Length","Length","Width","Height","Width","Height","Length","Width","Width","Height","Width","Length",
"Length","Height","Height")
PASSFAIL <- c("PASS","PASS","FAIL","PASS","PASS","FAIL_AVG_HIGH","FAIL#Pts","FAIL","FAIL_AVG_LOW","FAIL","PASS","PASS","FAIL#RNG#HIGH","PASS","FAIL")
df1 <- data.frame(Datetime,Measurement,PASSFAIL)
df1
Datetime Measurement PASSFAIL
1 2015-09-29 08:22:00 Length PASS
2 2015-09-29 09:45:00 Length PASS
3 2015-09-29 09:53:00 Width FAIL
4 2015-09-29 10:22:00 Height PASS
5 2015-09-29 10:42:00 Width PASS
6 2015-09-29 11:31:00 Height FAIL_AVG_HIGH
7 2015-09-29 11:47:00 Length FAIL#Pts
8 2015-09-29 12:45:00 Width FAIL
9 2015-09-29 13:11:00 Width FAIL_AVG_LOW
10 2015-09-29 13:44:00 Height FAIL
11 2015-09-29 15:24:00 Width PASS
12 2015-09-29 16:28:00 Length PASS
13 2015-09-29 20:22:00 Length FAIL#RNG#HIGH
14 2015-09-29 21:38:00 Height PASS
15 2015-09-29 23:34:00 Height FAIL
Я работаю на интересной проблеме, чтобы найти частоту отказов для каждого измерения в 12 AM-12PM & 12 PM-12AM (на следующий день) в день.
Примечание: В df1 все, что имеет FAIL в столбце PASSFAIL, считается сбоем.
Fail Rate = (Number of Fails)/(Number of Fails + Number of Pass)
Мой желаемый результат что-то вроде этого
Datetime FailRate_length Total_length FailRate_Width Total_Width FailRate_Height Total_Height
1 2015-09-29 00:00:00 AM 0.33 3 0.50 2 0.50 2
2 2015-09-29 12:00:00 PM 0.50 2 0.66 3 0.66 3
Я пытаюсь использовать dplyr и data.table пакеты для решения этой проблемы, но я просто не зная, как разделить временные интервалы в df1 для получаем df2, который имеет 2 значения -> 12AM (первые 7 наблюдений df1) & 12PM (Следующие 8 наблюдений в df1). Может ли кто-нибудь помочь мне в этом?
Я получил первую часть скрипт работает. Это выглядит замечательно. Но линия dcast выдает ошибку: «Ошибка в .subset2 (x, i, exact = exact): индекс за пределами границ». Не могли бы вы проверить это? – Sharath
Очень приятно, хотя, вероятно, более эффективно создавать 'd' и' antepost' перед операциями группировки, если набор данных очень велик, поскольку 'as.IDate' и' as.POSIXlt' не очень эффективны. –
@Sharath Возможно, у вас нет последней версии пакета data.table ...? Он работает на моем конце. Возможно, начните новую сессию R только для проверки этого кода и сравните 'sessionInfo()' с последней версией data.table на CRAN (в настоящее время 1.9.6) – Frank