使用dplyr将函数table()应用于data.frame的每一列
我经常使用plyr在数据帧的每一列上应用表函数,如下所示:
library(plyr)
ldply( mtcars, function(x) data.frame( table(x), prop.table( table(x) ) ) )
是否可以在dplyr中执行此操作?
我的尝试失败了:
mtcars %>% do( table %>% data.frame() )
melt( mtcars ) %>% do( table %>% data.frame() )
3 回答
您可以尝试以下不依赖于
tidyr
包的方法 .通常,您可能不希望在数据帧的每一列上运行
table()
,因为至少有一个变量是唯一的(id
字段)并产生非常长的输出 . 但是,您可以使用group_by()
和tally()
获取dplyr
链中的频率表 . 或者你可以使用count()
为你做group_by()
.如果要执行双向频率表,请按多个变量分组 .
您可以使用
tidyr
包的spread()
将双向输出转换为输出,当输入两个变量时,输出用于接收table()
.Using tidyverse (dplyr and purrr):