2013-09-13 2 views
0

Так что я dataframe который выглядит следующим образом:Векторизация продукта в difftime

ID Initialdate Finaldate 
    1405 2003-12-03 2010-12-07 
    7044 2004-12-08 2011-10-13 
    7219 2008-05-16 2009-06-04 
18618 2004-06-17 2012-02-13 
19900 2005-06-01 2008-06-11 
20138 2010-01-20 2010-01-20 
29067 2003-04-30 2004-09-10 
33546 2003-11-25 2008-10-10 
37321 2003-06-07 2006-03-20 
43028 2004-09-23 2008-07-25 
43591 2005-04-06 2005-11-15 
46749 2005-02-28 2005-05-16 
48846 2005-08-02 2005-08-02 
114353 2002-05-17 2006-10-26 
128180 2004-06-17 2010-06-21 
128648 2003-05-07 2009-07-23 
133337 2004-05-26 2012-07-26 
149181 2002-10-19 2008-07-27 
214079 2003-09-26 2007-05-20 
215060 2006-04-17 2011-08-17 
229816 2007-04-25 2011-09-24 
238123 2007-11-26 2012-01-31 
253776 2006-03-02 2012-04-19 
258660 2010-03-25 2012-04-09 
265356 2002-04-22 2002-04-22 

Я сделал четвертый столбец, содержащий разность между окончательной датой и начальной датой с помощью следующего кода, и очистил его как таковой:

df$Duration<-(difftime(df$Finaldate, df$Initialdate, units = "days")) 
df$Duration<-as.numeric(df$Duration, units = "days") 

я получаю следующий вывод, который делает меня счастливым:

ID Initialdate Finaldate Duration 
    1405 2003-12-03 2010-12-07 2561.00000 
    7044 2004-12-08 2011-10-13 2499.95833 
    7219 2008-05-16 2009-06-04 384.00000 
18618 2004-06-17 2012-02-13 2797.04167 
19900 2005-06-01 2008-06-11 1106.00000 
20138 2010-01-20 2010-01-20 0.00000 
29067 2003-04-30 2004-09-10 499.00000 
33546 2003-11-25 2008-10-10 1780.95833 
37321 2003-06-07 2006-03-20 1017.04167 
43028 2004-09-23 2008-07-25 1401.00000 
43591 2005-04-06 2005-11-15 223.04167 
46749 2005-02-28 2005-05-16 76.95833 
48846 2005-08-02 2005-08-02 0.00000 
114353 2002-05-17 2006-10-26 1623.00000 
128180 2004-06-17 2010-06-21 2195.00000 
128648 2003-05-07 2009-07-23 2269.00000 
133337 2004-05-26 2012-07-26 2983.00000 
149181 2002-10-19 2008-07-27 2108.00000 
214079 2003-09-26 2007-05-20 1332.00000 
215060 2006-04-17 2011-08-17 1948.00000 
229816 2007-04-25 2011-09-24 1613.00000 
238123 2007-11-26 2012-01-31 1527.00000 
253776 2006-03-02 2012-04-19 2239.95833 
258660 2010-03-25 2012-04-09 746.00000 
265356 2002-04-22 2002-04-22 0.00000 

мой план отсюда заключался в векторизации данных о длительности, особенно тех, которые меньше 180 дней, а затем использовать эту новую фреймворк для удаления этих ID # s из исходного фрейма с использованием кода следующим образом: df_final<-df[!(df$ID %in% unqualified$ID),]. Однако, когда я делаю это так:

unqualified<-(df[df$Duration <= '179.000',]) 

я получаю этот выход, который, безусловно, не правильно:

ID Initialdate Finaldate Duration 
19900 2005-06-01 2008-06-11 1106.000 
20138 2010-01-20 2010-01-20 0.000 
33546 2003-11-25 2008-10-10 1780.958 
37321 2003-06-07 2006-03-20 1017.042 
43028 2004-09-23 2008-07-25 1401.000 
48846 2005-08-02 2005-08-02 0.000 
114353 2002-05-17 2006-10-26 1623.000 
214079 2003-09-26 2007-05-20 1332.000 
229816 2007-04-25 2011-09-24 1613.000 
238123 2007-11-26 2012-01-31 1527.000 
265356 2002-04-22 2002-04-22 0.000 

я думал, возможно, это произошло потому, что была проблема с числами в продолжительности, но они перечислены как числовые, когда я запускаю sapply(unqualified, class) и sapply(unqualified, mode). Я должен также упомянуть, что ранее в моем кодировании я преобразовал даты с помощью strptime, чтобы убедиться, что они были правильными. Я искал вокруг, чтобы попытаться выяснить, с проблемой, но все идет вверх Millhouse ... любая помощь будет оценен

+0

удалить цитаты при сравнении, т. Е. 'Df $ Duration <= 179' – eddi

ответ

1

Как насчет так:

unqualified<-(df[df$Duration < 180,]) 

Т.е. ваш номер как число, а не строку.

+0

Ну, я не чувствую себя глупо, это было легко. Спасибо, что ответили на вопрос о нобе! – Jellio

Смежные вопросы