如何在 R 中使用 xtabs() 计算频率?
在本文中,我们将研究在 R 编程语言中使用 xtabs()函数计算频率的不同方法。
xtabs()函数:此函数用于使用公式接口从通常包含在数据框中的交叉分类因素创建列联表。
Syntax: xtabs(formula = ~., data = parent.frame())
Parameters:
- formula; a formula object with the cross-classifying variables (separated by +) on the right-hand side.
- data: an optional matrix or data frame containing the variables in the formula. By default, the variables are taken from the environment.
方法一:使用 xtabs()函数计算单向频率
在这种计算单向频率的方法中,用户只需调用 xtabs()函数并将其与要计算频率的所需变量一起传递,这将返回传递的单个变量的频率到 R 编程语言中的函数。
示例:在此示例中,我们将采用包含五个不同变量的数据框,然后使用 xtabs()函数,我们将在 R 语言中绕过单个 z 变量来计算频率,
R
data <- data.frame(v=rep(c('A', 'B', 'C'),
times=c(20, 16, 14)),
w=rep(c('D', 'E', 'F'),
times=c(10, 10, 30)),
x=rep(c('G', 'H', 'I'),
times=c(15, 20, 15)),
y=rep(c('J', 'K', 'L'),
times=c(16, 16,18)),
z=rep(c('M', 'N', 'O'),
times=c(25, 15,10)))
xtabs(~z, data)
R
data <- data.frame(v=rep(c('A', 'B', 'C'),
times=c(20, 16, 14)),
w=rep(c('D', 'E', 'F'),
times=c(10, 10, 30)),
x=rep(c('G', 'H', 'I'),
times=c(15, 20, 15)),
y=rep(c('J', 'K', 'L'),
times=c(16, 16,18)),
z=rep(c('M', 'N', 'O'),
times=c(25, 15,10)))
xtabs(~w+y, data)
R
data <- data.frame(v=rep(c('A', 'B', 'C'),
times=c(20, 16, 14)),
w=rep(c('D', 'E', 'F'),
times=c(10, 10, 30)),
x=rep(c('G', 'H', 'I'),
times=c(15, 20, 15)),
y=rep(c('J', 'K', 'L'),
times=c(16, 16,18)),
z=rep(c('M', 'N', 'O'),
times=c(25, 15,10)))
xtabs(~v+w+x+y+z, data)
输出:
M N O
25 15 10
方法二:使用 xtabs()函数计算双向频率
在此方法中,用户可以使用 xtabs()函数获取组合频率,只需调用此函数并在第一个变量末尾使用“+”号,然后写入第二个变量的名称即可获得组合频率在 R 编程语言中,作为函数参数传递的两个变量的频率相结合。
示例:在此示例中,我们将使用与上一个示例相同的数据框,在 R 编程语言中使用带有 xtabs()函数的“+”号来获取 w 和 y 变量的频率。
R
data <- data.frame(v=rep(c('A', 'B', 'C'),
times=c(20, 16, 14)),
w=rep(c('D', 'E', 'F'),
times=c(10, 10, 30)),
x=rep(c('G', 'H', 'I'),
times=c(15, 20, 15)),
y=rep(c('J', 'K', 'L'),
times=c(16, 16,18)),
z=rep(c('M', 'N', 'O'),
times=c(25, 15,10)))
xtabs(~w+y, data)
输出:
y
w J K L
D 10 0 0
E 6 4 0
F 0 12 18
方法3:使用xtabs()函数计算n路频率
在这种使用 xtabs()函数获取频率的方法中,用户只需在变量之间添加“+”号即可使用此函数获取 n-变量的组合频率,并且此函数将返回频率R 编程语言中提到的变量。
示例:在此示例中,我们将使用 R 编程语言中 xtabs()函数的 n 向频率方法计算数据框中所有变量的频率。
R
data <- data.frame(v=rep(c('A', 'B', 'C'),
times=c(20, 16, 14)),
w=rep(c('D', 'E', 'F'),
times=c(10, 10, 30)),
x=rep(c('G', 'H', 'I'),
times=c(15, 20, 15)),
y=rep(c('J', 'K', 'L'),
times=c(16, 16,18)),
z=rep(c('M', 'N', 'O'),
times=c(25, 15,10)))
xtabs(~v+w+x+y+z, data)
输出:
, , x = G, y = J, z = M
w
v D E F
A 10 5 0
B 0 0 0
C 0 0 0
, , x = H, y = J, z = M
w
v D E F
A 0 1 0
B 0 0 0
C 0 0 0
, , x = I, y = J, z = M
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = G, y = K, z = M
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = K, z = M
w
v D E F
A 0 4 0
B 0 0 5
C 0 0 0
, , x = I, y = K, z = M
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = G, y = L, z = M
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = L, z = M
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = I, y = L, z = M
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = G, y = J, z = N
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = J, z = N
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = I, y = J, z = N
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = G, y = K, z = N
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = K, z = N
w
v D E F
A 0 0 0
B 0 0 7
C 0 0 0
, , x = I, y = K, z = N
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = G, y = L, z = N
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = L, z = N
w
v D E F
A 0 0 0
B 0 0 3
C 0 0 0
, , x = I, y = L, z = N
w
v D E F
A 0 0 0
B 0 0 1
C 0 0 4
, , x = G, y = J, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = J, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = I, y = J, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = G, y = K, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = K, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = I, y = K, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = G, y = L, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = H, y = L, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 0
, , x = I, y = L, z = O
w
v D E F
A 0 0 0
B 0 0 0
C 0 0 10