Most of your counting needs can be handled elegantly with the xtabs()
function (cross-tabulation). This'll work a lot faster than an iterative
method. For your data I would suggest something like this:

# Create a column indicating whether or not the value in Col2 is above 5
dataset$Col2greaterthan5 <- dataset$Col2 > 5
# Cross-tabulate
xtabs(~ Col1 + Col2greaterthan5, dataset)



> Message: 2
> Date: Sun, 16 Sep 2012 03:41:45 -0700 (PDT)
> From: SirRon <thechrist...@gmx.at>
> To: r-help@r-project.org
> Subject: [R] Count based on 2 conditions [Beginner Question]
> Message-ID: <1347792105574-4643282.p...@n4.nabble.com>
> Content-Type: text/plain; charset=us-ascii
>
> Hello,
> I'm working with a dataset that has 2 columns and 1000 entries. Column 1
> has
> either value 0 or 1, column 2 has values between 0 and 10. I would like to
> count how often Column 1 has the value 1, while Column 2 has a value
> greater
> 5.
>
> This is my attempt, which works but doesn't seem to be very efficient,
> especially when testing different values or columns.
>
> count=0
> for (i in 1:1000) { if(dataset[i,2]>5 && ind[i,1]==1) { count=count+1}}
>
> I'm looking for a more efficient/elegant way to do this!
>
> Thanks!
>
>
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/Count-based-on-2-conditions-Beginner-Question-tp4643282.html
> Sent from the R help mailing list archive at Nabble.com.
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to