R语言 如何使用xtabs()来计算频率
在这篇文章中,我们将研究在R编程语言中使用xtabs()函数计算频率的不同方法。
xtabs()函数: 该函数用于使用公式界面从交叉分类因素中创建一个或然率表,这些因素通常包含在数据框中。
语法: xtabs(formula = ~., data = parent.frame())
参数
- formula;一个公式对象,右侧是交叉分类变量(用+分隔)。
- data:一个可选的矩阵或数据框,包含公式中的变量。默认情况下,变量取自环境。
方法1:使用xtabs()函数计算单程频率
在这种方法中,用户需要简单地调用xtabs()函数,并将需要计算频率的变量传给它,进一步将传来的单个变量的频率返回给R编程语言中的函数。
例子: 在这个例子中,我们将采用一个包含五个不同变量的数据框,然后使用xtabs()函数计算频率,在R语言中绕过单一的z变量。
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)
输出
M N O
25 15 10
方法2:使用xtabs()函数来计算双向频率
在这个方法中,用户可以使用xtabs()函数得到组合频率,只需调用这个函数并在第一个变量的末尾使用’+’号,然后写上第二个变量的名称,就可以得到R编程语言中作为函数参数组合传递的两个变量的组合频率。
例子: 在这个例子中,我们将使用与前一个例子相同的数据框架,通过R编程语言中的xtabs()函数,使用’+’号来获得w和y两个变量的频率。
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路频率方法计算数据框中所有变量的频率。
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