如何对列联表的对角线数值求和并计算其占比?
解决方案
首先把生成的列联表赋值给变量,方便后续操作:
a = c(1, 3, 4) b = c(2, 3, 5) a_b = data.frame(a, b) lvls <- sort(unique(unlist(a_b))) # 将列联表存入变量tab tab <- table(lapply(a_b, factor, levels = lvls))
1. 计算对角线数值之和
用diag()提取列联表的对角线元素,再求和:
diag_sum <- sum(diag(tab)) # 输出结果:1
2. 计算对角线和的占比
占比为对角线和除以列联表的总观测数(sum(tab)等价于原始数据的行数):
diag_ratio <- diag_sum / sum(tab) # 输出结果:1/3 ≈ 0.3333333
如果需要保留两位小数,可使用round()函数:
round(diag_ratio, 2) # 输出结果:0.33
内容的提问来源于stack exchange,提问作者miguel
相关产品推荐
相关产品推荐

