你可以使用下面的基本语法,使用R中dplyr和tidyr包中的函数生成一个交叉表:
df %>%
group_by(var1, var2) %>%
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'),
points=c(7, 7, 8, 11, 13, 15, 19, 13))
#view data frame
df
team position points
1 A G 7
2 A G 7
3 A F 8
4 A C 11
5 B G 13
6 B F 15
7 B F 19
8 B C 13
我们可以使用下面的语法来为 "球队 "和 "位置 "这两个变量创建一个交叉表:
library(dplyr)
library(tidyr)
#produce crosstab
下面是如何解释交叉表中的数值:
- 有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
其他资源
下面的教程解释了如何在dplyr中执行其他常用函数: