本文介绍利用R apply函数创建数据框中多个变量的频次表。
apply() 函数
首先我们看下apply()函数语法:
apply(X, MARGIN FUN)
参数解释:
- X: 数组、矩阵或数据框
- MARGIN: 对行或列应用函数,1 表示行, 2 表示按列
- FUN: 对行或列应用的函数
下面通过几个示例进行说明。
示例1:所有变量的频次计算
下面示例计算数据框中所有变量的频次:
df <- data.frame(var1=c(1, 1, 2, 2, 2, 2, 3),
var2=c('A', 'A', 'A', 'A', 'B', 'B', 'B'),
var3=c(6, 7, 7, 7, 8, 8, 9))
head(df)
apply(df, 2, table)
# $var1
#
# 1 2 3
# 2 4 1
#
# $var2
#
# A B
# 4 3
#
# $var3
#
# 6 7 8 9
# 1 3 2 1
结果包括三个频率表,数据框中的每列分别展示,第一个频率表解释如下:
- var1 列中1 出现2次
- var1 列中2 出现4次
- var1 列中3 出现1次
其他两个表类似。
示例2:计算特定变量的频次
下面代码计算数据框中第一、三两列的频次:
df <- data.frame(var1=c(1, 1, 2, 2, 2, 2, 3),
var2=c('A', 'A', 'A', 'A', 'B', 'B', 'B'),
var3=c(6, 7, 7, 7, 8, 8, 9))
apply((df[c('var1', 'var3')]), 2, table)
# $var1
#
# 1 2 3
# 2 4 1
#
# $var3
#
# 6 7 8 9
# 1 3 2 1
示例3:计算排除某列的其他变量频次
我们可以利用数据框的索引,计算排除特定列的频次表:
df <- data.frame(index=c(1, 2, 3, 4, 5, 6, 7),
var2=c('A', 'A', 'A', 'A', 'B', 'B', 'B'),
var3=c(6, 7, 7, 7, 8, 8, 9))
apply((df[-1]), 2, table)
# $var2
#
# A B
# 4 3
#
# $var3
#
# 6 7 8 9
# 1 3 2 1
本文参考链接:https://blog.csdn.net/neweastsun/article/details/123146799