0

这是我的数据集(称为 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 到 2200 之间有 >0 的天数(因此,如果在 900 处有 0 个计数,这意味着该天不包括在子集中,但如果在 600 到 2200 之间有计数但在 200 处为 0,那么一整天仍然计算在内)我的代码工作正常,但有几个小时看似随机的日子,我在输出中包含 -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)

提前感谢您的帮助,凯蒂

4

1 回答 1

1

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

于 2011-07-11T15:11:48.730 回答