r - 如何使用dplyr生成频率表

标签 r dataframe dplyr frequency

我喜欢创建一个表,该表在我的数据框中具有几列的频率。我正在复制下面的数据框。

该表的频率(n和%)在“颜色”中为“红色”,在“性别”中为“F”。

我认为dplyr软件包可以做到这一点,但我无法弄清楚。

谢谢-

受访者ID颜色性别
1 1503红F
2 1653 NA M
3 1982红F
4 4862红色NA
15 4880蓝色M

最佳答案

library(dplyr)

df %>%
  count(Color, Gender) %>%
  group_by(Color) %>%          # now required with changes to dplyr::count()
  mutate(prop = prop.table(n))

# Source: local data frame [4 x 4]
# Groups: Color [3]
# 
#    Color Gender     n      prop
#   (fctr) (fctr) (int)     (dbl)
# 1   Blue      M     1 1.0000000
# 2    Red      F     2 0.6666667
# 3    Red     NA     1 0.3333333
# 4     NA      M     1 1.0000000

更新每个注释-如果要单独查看每个变量,则需要先重新排列数据框。您可以使用tidyr完成此操作:
library(tidyr)
library(dplyr)

gather(df, "var", "value", -RespondentID) %>%
  count(var, value) %>%
  group_by(var) %>%             # now required with changes to dplyr::count()
  mutate(prop = prop.table(n))

# Source: local data frame [6 x 4]
# Groups: var [2]
# 
#      var value     n  prop
#   (fctr) (chr) (int) (dbl)
# 1  Color  Blue     1   0.2
# 2  Color   Red     3   0.6
# 3  Color    NA     1   0.2
# 4 Gender     F     2   0.4
# 5 Gender     M     2   0.4
# 6 Gender    NA     1   0.2

关于r - 如何使用dplyr生成频率表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860535/

相关文章:

r - 使用列表中的字符串在R中选择列

r - plotly 悬停标签颜色透明度

python - 使用python删除pandas DataFrame中的子字符串

R - 根据数据帧中的时间约束查找行元素序列

复制后data.table中的引用问题

r - 如何使用 dplyr 同时交换两列中的值

python - 获取 Cannot mask with non-boolean array containing NA/NaN values...但是没有任何缺失值

R替换数据框中的值

r - 如何根据条件将列分成两列

r - 基于映射和用户数据创建新的 tibble 列