Message-ID: <CAM_vjumQn+AvYmABQQFyvptpSAunPwoT+uMzg+ZmfLmfOuzh0w@mail.gmail.com>
Date: 2013-06-07T14:30:34Z
From: Sarah Goslee
Subject: Get count by day for particular coulmn
In-Reply-To: <1370605116158-4668915.post@n4.nabble.com>
Hi,
On Fri, Jun 7, 2013 at 7:38 AM, R_Antony <antony.akkara at ge.com> wrote:
> here i have a dataframe
>
> for eg:-
> DATETIME COL_A COL_B COL_C COL_D
> 1/1/2007 0:01 0 3 0 0
> 1/1/2007 0:02 0 0 3 0
> 1/1/2007 0:03 0 3 0 0
> ....................... ..... ... ...
> ....
> 1/2/2007 0 0 3 0
> 1/2/2007 0:01 0 3 4 0
> 1/2/2007 0:02 0 3 0 0
> ....................... ..... ... ...
> ....
> 1/3/2007 0 0 0 0
> 1/3/2007 0:01 0 0 4 0
> 1/3/2007 0:02 0 3 0 0
> ....................... ..... ... ...
> ....
>
> My requirement what is, i have to get the count for each "day " where COL_B
> = 3
>
> For eg:- here i need to get like
> DATETIME COUNT(COL_B=3)
> ------------ ------------
> 1/1/2007 2
> 1/2/2007 3
> 1/3/2007 1
>
> =============================
> =============================
Since you didn't provide reproducible data (dput() is great for that),
here's an example with fake data:
MyDF <- data.frame(DATETIME = c("1/1/2007", "1/1/2007", "1/1/2007",
"1/2/2007", "1/2/2007", "1/2/2007", "1/3/2007", "1/3/2007",
"1/3/2007"),
COL_A = c(0, 0, 0, 1, 0, 1, 2, 3, 1),
COL_B = c(0, 3, 0, 3, 3, 1, 0, 1, 2),
COL_C = c(1, 2, 3, 1, 2, 3, 1, 2, 3), stringsAsFactors=FALSE)
aggregate(COL_B ~ DATETIME, data=MyDF, FUN=function(x)sum(x == 3))
> and this way i tried to get,
> MyDF[MyDF["DATETIME"]=="1/2/2007"] ---> here this only select the row where
> DATETIME - column coming as
> "1/2/2007" - date and not selecting other rows where same date is coming
> (eg:- 1/1/2007 0:01). And here i need to get the complete records for that
> particular day, when i give date without giving timestamp.
You omitted a comma:
MyDF[MyDF["DATETIME"]=="1/2/2007", ]
You might prefer:
subset(MyDF, DATETIME == "1/2/2007")
Sarah
--
Sarah Goslee
http://www.functionaldiversity.org