这是我的数据集(称为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)
提前感谢您的帮助, 凯蒂
答案 0 :(得分:1)
如果您使用prod
函数进行聚合,然后检查结果是否> 0,那么当-4 * -4为GT 0时,您不应该感到惊讶。