如何使用 dplyr 创建交叉表(带有示例)
您可以使用以下基本语法,使用 R 中dplyr和Tidyr包中的函数来生成交叉表:
df %>% group_by (var1, v ar2) %>% tally () %>% spread (var1,n)
以下示例展示了如何在实践中使用此语法。
示例 1:创建基本交叉表
假设我们在 R 中有以下数据框:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), position=c('G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'), dots=c(7, 7, 8, 11, 13, 15, 19, 13)) #view data frame df team position points 1 AG 7 2 AG 7 3AF 8 4 AC 11 5 BG 13 6 BF 15 7 BF 19 8 BC 13
我们可以使用以下语法为“团队”和“位置”变量创建交叉表:
library (dplyr) library (tidyr) #produce crosstab df %>% group_by (team, position) %>% tally () %>% spread (team, n) # A tibble: 3 x 3 position AB 1 C 1 1 2 F 1 2 3 G 2 1
以下是解释交叉表值的方法:
- 有1 名球员占据“C”位置并属于“A”队
- 有1 名球员占据“C”位置并属于“B”队
- 有1 名球员占据“F”位置并属于“A”队
- 有2 名球员的位置为“F”,属于“B”队
- 有2 名球员的位置为“G”,属于“A”队
- 有1 名球员占据“G”位置,属于“B”队
请注意,我们可以通过更改spread()函数中使用的变量来更改交叉表的行和列:
library (dplyr) library (tidyr) #produce crosstab with 'position' along columns df %>% group_by (team, position) %>% tally () %>% spread (position, n) # A tibble: 2 x 4 # Groups: team [2] team CFG 1 A 1 1 2 2 B 1 2 1
其他资源
以下教程解释了如何在 dplyr 中执行其他常用功能: