如何将R语言table()输出转换为一致格式的矩阵或数据框
问题:将table()输出转换为格式一致的矩阵/数据框
给定R代码
df <- data.frame(Factor1 = factor(c(rep("A", 2), rep("B", 2), rep("C", 2))), Factor2 = factor(LETTERS[12:7])) table(df$Factor1, df$Factor2)
运行输出
G H I J K L A 0 0 0 0 1 1 B 0 0 1 1 0 0 C 1 1 0 0 0 0
解决方案
转换为矩阵
table()的返回对象本身属于table类,直接用as.matrix()就能得到格式完全匹配的矩阵,行列名、数值都和原输出一致:
# 先保存table结果 tab <- table(df$Factor1, df$Factor2) # 转换为矩阵 mat <- as.matrix(tab) # 查看结果 mat
转换为数据框
如果需要转换为数据框,推荐使用as.data.frame.matrix(),它会直接保留原table的行列结构:
df_result <- as.data.frame.matrix(tab) # 查看结果 df_result
如果需要把行名(即Factor1的水平)作为单独一列保留,可以手动添加:
# 新增Factor1列,值为原数据框的行名 df_result_with_rowname <- cbind(Factor1 = rownames(df_result), df_result) # 可选:移除默认的行号索引 rownames(df_result_with_rowname) <- NULL
内容的提问来源于stack exchange,提问作者nouse
相关产品推荐
相关产品推荐

