本文介绍如何利用dplyr包生成频数表
创建示例数据
set.seed(111)
# Create random example data
data <- data.frame(x = sample(1:5, 100, replace = TRUE),
y = sample(LETTERS[1:3], 100, replace = TRUE))
head(data)
# x y
# 1 3 B
# 2 4 B
# 3 3 B
# 4 1 B
# 5 3 C
# 6 5 B
示例数据框包括100行2列数据。其中x的范围是1到5,y为A、B、C三个字母值。
使用R数据
我们可以使用R内置函数table对多个列进行分组生成列联表:
with(data,table(x,y))
# y
# x A B C
# 1 7 6 6
# 2 4 8 6
# 3 1 8 8
# 4 6 9 9
# 5 7 4 11
但不够直观,这里使用dplyr包,首先对数据进行分组,然后利用summarise()函数计算每组记录数,最后利用mutate计算频率列freq:
library("dplyr")
set.seed(111)
# Create random example data
data <- data.frame(x = sample(1:5, 100, replace = TRUE),
y = sample(LETTERS[1:3], 100, replace = TRUE))
# head(data)
data <- data %>% # Create tibble with frequencies
group_by(x, y) %>%
summarise(n = n(), .groups = 'drop') %>%
mutate(freq = n / sum(n))
data
# A tibble: 15 x 4
# x y n freq
# <int> <chr> <int> <dbl>
# 1 1 A 7 0.07
# 2 1 B 6 0.06
# 3 1 C 6 0.06
# 4 2 A 4 0.04
# 5 2 B 8 0.08
# 6 2 C 6 0.06
# 7 3 A 1 0.01
# 8 3 B 8 0.08
# 9 3 C 8 0.08
# 10 4 A 6 0.06
# 11 4 B 9 0.09
# 12 4 C 9 0.09
# 13 5 A 7 0.07
# 14 5 B 4 0.04
# 15 5 C 11 0.11
本文参考链接:https://blog.csdn.net/neweastsun/article/details/121547711