没有从数据集中删除数据< 0的问题(尽管代码似乎正确?)

时间:2011-07-11 14:57:00

标签: r subset hour

这是我的数据集(称为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

如果数据在一天中的两个小时之间符合特定条件(请参阅此处subset data for a day if data between two hours of the day meets criteria?)并且工作正常,我最近询问了如何对我的数据进行子集化的问题。

我的后续问题是这个,

任何小于0的计数都需要从数据集中取出,因为这是一个错误。对于在600和2200之间存在> 0的天数(因此,如果在900处有0计数,则这意味着该日子不包括在子集中但是如果计数在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 个答案:

答案 0 :(得分:1)

如果您使用prod函数进行聚合,然后检查结果是否> 0,那么当-4 * -4为GT 0时,您不应该感到惊讶。