📜  如何在 R 中使用 xtabs() 计算频率?

📅  最后修改于: 2022-05-13 01:55:13.430000             🧑  作者: Mango

如何在 R 中使用 xtabs() 计算频率?

在本文中,我们将研究在 R 编程语言中使用 xtabs()函数计算频率的不同方法。

xtabs()函数:此函数用于使用公式接口从通常包含在数据框中的交叉分类因素创建列联表。

方法一:使用 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