count number of rows in a data frame in R based on group

dataframe, r, rowcount

Solution

Here's an example that shows how `table(.)` (or, more closely matching your desired output, `data.frame(table(.))` does what it sounds like you are asking for.

Note also how to share reproducible sample data in a way that others can copy and paste into their session.

Here's the (reproducible) sample data:

mydf <- structure(list(ID = c(110L, 111L, 121L, 131L, 141L), 
                       MONTH.YEAR = c("JAN. 2012", "JAN. 2012", 
                                      "FEB. 2012", "FEB. 2012", 
                                      "MAR. 2012"), 
                       VALUE = c(1000L, 2000L, 3000L, 4000L, 5000L)), 
                  .Names = c("ID", "MONTH.YEAR", "VALUE"), 
                  class = "data.frame", row.names = c(NA, -5L))

mydf
#    ID MONTH.YEAR VALUE
# 1 110  JAN. 2012  1000
# 2 111  JAN. 2012  2000
# 3 121  FEB. 2012  3000
# 4 131  FEB. 2012  4000
# 5 141  MAR. 2012  5000

Here's the calculation of the number of rows per group, in two output display formats:

table(mydf$MONTH.YEAR)
# 
# FEB. 2012 JAN. 2012 MAR. 2012 
#         2         2         1

data.frame(table(mydf$MONTH.YEAR))
#        Var1 Freq
# 1 FEB. 2012    2
# 2 JAN. 2012    2
# 3 MAR. 2012    1

Problem

I have a data frame in `R` like this: ``` ID MONTH-YEAR VALUE 110 JAN. 2012 1000 111 JAN. 2012 2000 . . . . 121 FEB. 2012 3000 131 FEB. 2012 4000 . . . . ``` So, for each month of each year there are `n` rows and they can be in any order(mean they all are not in continuity and are at breaks). I want to calculate how many rows are there for each `MONTH-YEAR` i.e. how many rows are there for JAN. 2012, how many for FEB. 2012 and so on. Something like this: ``` MONTH-YEAR NUMBER OF ROWS JAN. 2012 10 FEB. 2012 13 MAR. 2012 6 APR. 2012 9 ``` I tried to do this: ``` n_row <- nrow(dat1_frame %.% group_by(MONTH-YEAR)) ``` but it does not produce the desired output.How can I do that?

Original source

Related problems