我喜欢创建一个表,该表在我的数据框中具有几列的频率。我正在复制下面的数据框。
该表的频率(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/