Skip to main content
 首页 » 编程设计

R语言dplyr生成频数表

2022年07月19日116zlslch

本文介绍如何利用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
阅读延展