[R] Count number in r

David L Carlson dcarlson at tamu.edu
Tue May 19 17:18:53 CEST 2015


Here's an approach using xtabs() if you want the output as a table:

> flag <- as.integer(d$Rain>=.1)
> xtabs(flag~Year+Month, d)
      Month
Year    1  2
  1971 12  0

-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352

-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Jorge I Velez
Sent: Tuesday, May 19, 2015 8:21 AM
To: Hafizuddin Arshad
Cc: R Help
Subject: Re: [R] Count number in r

Dear Arshad,

Here is a possibility using tapply():

with(d, tapply(Rain, list(Month, Year), function(x) sum(x > .1)))
##1971
#1   12
#2    0


where "d" is your data.frame().   See also ?aggregate and ?ave.

Best,
Jorge.-


On Tue, May 19, 2015 at 8:10 PM, Hafizuddin Arshad <
hafizuddinarshad21 at gmail.com> wrote:

> Dear R users,
>
> Could someone help me on this? I have this kind of data set:
>
> structure(list(Year = c(1971L, 1971L, 1971L, 1971L, 1971L, 1971L,
> 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L,
> 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L,
> 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L,
> 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L, 1971L,
> 1971L, 1971L), Month = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
> 2L, 2L, 2L), Rain = c(58.9, 74.6, 17.7, 7.8, 1.2, 1, 5.3, 0.7,
> 1.2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 10.4, 17.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), .Names = c("Year",
> "Month", "Rain"), class = "data.frame", row.names = c(NA, -44L
> ))
>
> I want to count data in "Rain" that is greater and equal to 0.1 mm
> according to their "Month" and "Year". I have used this code, but it seems
> so wrong.
>
> raindat <- read.csv('my data set',header=TRUE)
> yearcorr<-min(raindat$Year)-1
> years<-unique(raindat$Year)
> rainmonth<-as.data.frame(matrix(0,nrow=2,ncol=12))
> for(year in years) {
>   for(month in 1:12) {
>     if(any(raindat$Year==year&raindat$Month==month))
>       rainmonth[year-yearcorr,month]<-
>       length((which(raindat$Rain >=
> 0.1))[raindat$Year==year&raindat$Month==month])
>   }
> }
> rownames(rainmonth)<-years
> names(rainmonth)<-month.abb
> rainmonth
>
> Thank you so much.
>
>
> Arshad
>
>         [[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.
>

	[[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.



More information about the R-help mailing list