Проблема с данными <0, не удаляемыми из набора данных (несмотря на кажущийся правильный код?) - PullRequest
0 голосов
/ 11 июля 2011

Это мой набор данных (называется cc)

Counter Date    Hour    Counts
1296    02/05/2008  0      2
1296    02/05/2008  100    0
1296    02/05/2008  200    2
1296    02/05/2008  300    0
1296    02/05/2008  400    1
1296    02/05/2008  500    6
1296    02/05/2008  600    6
1296    02/05/2008  700    45
1296    02/05/2008  800    106
1296    02/05/2008  900    43
1296    02/05/2008  1000   33
1296    02/05/2008  1100   -4
1296    02/05/2008  1200   -4
1296    02/05/2008  1300   56
1296    02/05/2008  1400   45
1296    02/05/2008  1500   49
1296    02/05/2008  1600   88
1296    02/05/2008  1700   124
1296    02/05/2008  1800   91
1296    02/05/2008  1900   42
1296    02/05/2008  2000   33
1296    02/05/2008  2100   13
1296    02/05/2008  2200   9
1296    02/05/2008  2300   8

Я недавно задал вопрос о том, как установить подмножество моих данных, если данные соответствуют определенным критериям между двумя часами дня (см. Вопрос здесь подмножество данных за день, если данные между двумя часами дня соответствуют критериям? ), который работал нормально.

Мой следующий вопрос:

Любые значения меньше 0 должны быть удалены из набора данных, так как это ошибка. Для дней, когда> 600 находится между 600 и 2200 (так что если 0 равно 900, это будет означать, что день не включен в подмножество, но если есть подсчеты между 600 и 2200, но 0 при 200, то весь день) все еще считается) мой код работает нормально, но есть пара часов, казалось бы, случайных дней, когда в вывод включаются данные -4 (в примерах 1100 и 1200). Я не вижу никакой причины, по которой эти минусовые числа все еще должны быть в наборе данных, так как остальные минусовые числа удалены, Я также проверил свои исходные данные, и нет разницы в форматировании , Буду признателен за любую помощь, поскольку я не нашел ничего другого, что могло бы помочь при поиске в Интернете, и я считаю, что код, указанный в моем последнем вопросе, был верным.

Вот код, который я использовал (который все работы находят, кроме случайных -4 в течение нескольких дней).

#code to make only 600 hrs to 2200 hrs over 0 #
#########################################

TDF <- subset(cc, Hour>=600 & Hour<=2200) 
# get dates where there are no hours with zero count 
dates2 <- subset(aggregate(counts~Date,TDF,prod),counts>=0)$Date  
DF3 <- subset(cc,Date %in% dates2) 

#i then make the counts daily (not shown in example)#
###########################################
daily=subset(DF3)
daily$Date <- as.Date(daily$Date, "%d/%m/%Y") 
town=aggregate(counts ~ Date, daily, sum)

Заранее благодарю за помощь, Кэти

1 Ответ

1 голос
/ 11 июля 2011

Если вы агрегируете с помощью функции prod и затем проверяете, что результат> 0, вы не должны удивляться, когда -4 * -4 равен GT 0.

...