I often apply the table-function on each column of a data frame using plyr, like this:
In general you probably would not want to run table()
on every column of a data frame because at least one of the variables will be unique (an id
field) and produce a very long output. However, you can use group_by()
and tally()
to obtain frequency tables in a dplyr
chain. Or you can use count()
which does the group_by()
for you.
> mtcars %>%
group_by(cyl) %>%
tally()
> # mtcars %>% count(cyl)
Source: local data frame [3 x 2]
cyl n
1 4 11
2 6 7
3 8 14
If you want to do a two-way frequency table, group by more than one variable.
> mtcars %>%
group_by(gear, cyl) %>%
tally()
> # mtcars %>% count(gear, cyl)
You can use spread()
of the tidyr
package to turn that two-way output into the output one is used to receiving with table()
when two variables are input.