寻求R中类似Matlab crosstab函数的交叉表实现方法
R中实现Matlab
crosstab功能的方法 你可以用R里的基础函数轻松实现Matlab crosstab的交叉计数功能,以下是两种常用方法:
方法1:使用table()函数
这是最直接的方式,table()函数默认就是对两个变量的交叉组合进行频数统计:
# 定义示例向量 x <- c(1, 1, 2, 3, 1) y <- c(1, 2, 5, 3, 1) # 生成交叉表 cross_tab <- table(x, y) print(cross_tab)
输出结果:
y x 1 2 3 5 1 2 1 0 0 2 0 0 0 1 3 0 0 1 0
这个结果和你给出的Matlab crosstab(x,y)输出完全对应,行是x的唯一值,列是y的唯一值,单元格是对应组合的出现次数。
方法2:使用xtabs()函数(修正你的用法)
你之前用xtabs(x + y)是错误的,因为这个写法是计算每个交叉组中x+y的求和值,而非频数。正确的用法是用公式语法,左边省略时默认统计频数:
cross_tab_xtabs <- xtabs(~ x + y) print(cross_tab_xtabs)
输出和table()的结果一致,如果你需要将结果转换为纯数值矩阵格式(更贴近Matlab的输出形式),可以用as.matrix(cross_tab_xtabs)。
内容的提问来源于stack exchange,提问作者bobosein
相关产品推荐
相关产品推荐

