[R] Aggregate rainfall data

David Winsemius dwinsemius at comcast.net
Wed Jul 13 03:42:00 CEST 2016


> On Jul 12, 2016, at 3:45 PM, roslinazairimah zakaria <roslinaump at gmail.com> wrote:
> 
> Dear R-users,
> 
> I have these data:
> 
> head(balok, 10); tail(balok, 10)
>        Date     Time Rain.mm
> 1  30/7/2008  9:00:00       0
> 2  30/7/2008 10:00:00       0
> 3  30/7/2008 11:00:00       0
> 4  30/7/2008 12:00:00       0
> 5  30/7/2008 13:00:00       0
> 6  30/7/2008 14:00:00       0
> 7  30/7/2008 15:00:00       0
> 8  30/7/2008 16:00:00       0
> 9  30/7/2008 17:00:00       0
> 10 30/7/2008 18:00:00       0
>           Date     Time Rain.mm
> 63667 4/11/2015  3:00:00       0
> 63668 4/11/2015  4:00:00       0
> 63669 4/11/2015  5:00:00       0
> 63670 4/11/2015  6:00:00       0
> 63671 4/11/2015  7:00:00       0
> 63672 4/11/2015  8:00:00       0
> 63673 4/11/2015  9:00:00     0.1
> 63674 4/11/2015 10:00:00     0.1
> 63675 4/11/2015 11:00:00     0.1
> 63676 4/11/2015 12:00:00    0.1?
> 
>> str(balok)
> 'data.frame':   63676 obs. of  3 variables:
> $ Date   : Factor w/ 2654 levels "1/1/2009","1/1/2010",..: 2056 2056 2056
> 2056 2056 2056 2056 2056 2056 2056 ...
> $ Time   : Factor w/ 24 levels "1:00:00","10:00:00",..: 24 2 3 4 5 6 7 8 9
> 10 ...
> $ Rain.mm: Factor w/ 352 levels "0","0.0?","0.1",..: 1 1 1 1 1 1 1 1 1 1

Thar's your problem:

  Rain.mm: Factor w/ 352 levels "0","0.0?","0.1"

Need to use the standard fix for the screwed-up-factor-on-input-problem

  balok$Rain.mm2 <- as.numeric( as.character(balok$Rain.mm) )

Cannot just do as.numeric because factors are actually already numeric.

-- 
David.


> ...
> 
> and I have change the data as follows:
> 
> realdate <- as.Date(balok$Date,format="%d/%m/%Y")
> dfdate <- data.frame(date=realdate)
> year=as.numeric (format(realdate,"%Y"))
> month=as.numeric (format(realdate,"%m"))
> day=as.numeric (format(realdate,"%d"))
> 
> balok2 <-cbind(dfdate,day,month,year,balok[,2:3])
> colnames(balok2)
> head(balok2)
>        date day month year     Time Rain.mm
> 1 2008-07-30  30     7 2008  9:00:00       0
> 2 2008-07-30  30     7 2008 10:00:00       0
> 3 2008-07-30  30     7 2008 11:00:00       0
> 4 2008-07-30  30     7 2008 12:00:00       0
> 5 2008-07-30  30     7 2008 13:00:00       0
> 6 2008-07-30  30     7 2008 14:00:00       0
> ...
> 
>> balok3 <- balok2[,-1]; head(balok3, n=100)
>    day month year     Time Rain.mm
> 1    30     7 2008  9:00:00       0
> 2    30     7 2008 10:00:00       0
> 3    30     7 2008 11:00:00       0
> 4    30     7 2008 12:00:00       0
> 5    30     7 2008 13:00:00       0
> 6    30     7 2008 14:00:00       0
> 7    30     7 2008 15:00:00       0
> 8    30     7 2008 16:00:00       0
> 9    30     7 2008 17:00:00       0
> 10   30     7 2008 18:00:00       0
> 11   30     7 2008 19:00:00       0
> 12   30     7 2008 20:00:00       0
> 13   30     7 2008 21:00:00       0
> 14   30     7 2008 22:00:00       0
> 15   30     7 2008 23:00:00       0
> 16   30     7 2008 24:00:00       0
> 17   31     7 2008  1:00:00       0
> 18   31     7 2008  2:00:00       0
> 19   31     7 2008  3:00:00       0
> 20   31     7 2008  4:00:00       0
> 21   31     7 2008  5:00:00       0
> 22   31     7 2008  6:00:00       0
> 23   31     7 2008  7:00:00       0
> 24   31     7 2008  8:00:00       0
> 25   31     7 2008  9:00:00       0
> 26   31     7 2008 10:00:00       0
> 27   31     7 2008 11:00:00       0
> 28   31     7 2008 12:00:00       0
> 29   31     7 2008 13:00:00       0
> 30   31     7 2008 14:00:00       0
> 31   31     7 2008 15:00:00       0
> 32   31     7 2008 16:00:00       0
> 33   31     7 2008 17:00:00       0
> 34   31     7 2008 18:00:00       0
> 35   31     7 2008 19:00:00       0
> 36   31     7 2008 20:00:00       0
> 37   31     7 2008 21:00:00       0
> 38   31     7 2008 22:00:00       0
> 39   31     7 2008 23:00:00       0
> 40   31     7 2008 24:00:00       0
> 41    1     8 2008  1:00:00       0
> 42    1     8 2008  2:00:00       0
> 43    1     8 2008  3:00:00       0
> 44    1     8 2008  4:00:00       0
> 45    1     8 2008  5:00:00       0
> 46    1     8 2008  6:00:00       0
> 47    1     8 2008  7:00:00       0
> 48    1     8 2008  8:00:00       0
> 49    1     8 2008  9:00:00       0
> 50    1     8 2008 10:00:00       0
> 51    1     8 2008 11:00:00       0
> 52    1     8 2008 12:00:00       0
> 53    1     8 2008 13:00:00       0
> 54    1     8 2008 14:00:00       0
> 55    1     8 2008 15:00:00       0
> 56    1     8 2008 16:00:00       0
> 57    1     8 2008 17:00:00       0
> 58    1     8 2008 18:00:00       0
> 59    1     8 2008 19:00:00       0
> 60    1     8 2008 20:00:00       0
> 61    1     8 2008 21:00:00       0
> 62    1     8 2008 22:00:00       0
> 63    1     8 2008 23:00:00       0
> 64    1     8 2008 24:00:00       0
> 65    2     8 2008  1:00:00       0
> 66    2     8 2008  2:00:00       0
> 67    2     8 2008  3:00:00       0
> 68    2     8 2008  4:00:00       0
> 69    2     8 2008  5:00:00       0
> 70    2     8 2008  6:00:00       0
> 71    2     8 2008  7:00:00       0
> 72    2     8 2008  8:00:00       0
> 73    2     8 2008  9:00:00       0
> 74    2     8 2008 10:00:00       0
> 75    2     8 2008 11:00:00       0
> 76    2     8 2008 12:00:00       0
> 77    2     8 2008 13:00:00       0
> 78    2     8 2008 14:00:00       0
> 79    2     8 2008 15:00:00       0
> 80    2     8 2008 16:00:00       0
> 81    2     8 2008 17:00:00       0
> 82    2     8 2008 18:00:00       0
> 83    2     8 2008 19:00:00       0
> 84    2     8 2008 20:00:00       0
> 85    2     8 2008 21:00:00       0
> 86    2     8 2008 22:00:00       0
> 87    2     8 2008 23:00:00       0
> 88    2     8 2008 24:00:00    11.1
> 89    3     8 2008  1:00:00     0.4
> 90    3     8 2008  2:00:00       0
> 91    3     8 2008  3:00:00       0
> 92    3     8 2008  4:00:00       0
> 93    3     8 2008  5:00:00       0
> 94    3     8 2008  6:00:00       0
> 95    3     8 2008  7:00:00       0
> 96    3     8 2008  8:00:00       0
> 97    3     8 2008  9:00:00       0
> 98    3     8 2008 10:00:00       0
> 99    3     8 2008 11:00:00       0
> 100   3     8 2008 12:00:00       0
> 
> The rainfall data is in hourly unit, and I would like to sum the Rain.mm
> according to month.  I tried to use aggregate(), but I got this message:
> 
> dt <- balok4
> str(dt)
> aggbalok <- aggregate(dt[,5], by=dt[,c(1,4)],FUN=sum, na.rm=TRUE)
> aggbalok
> 
> Error in Summary.factor(1L, na.rm = TRUE) :
>  sum not meaningful for factors
> 
> 
> Thank you so much for any help given.
> 
> Roslina
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list