R中如何导入非2×2列联表开展泊松分布GLM分析
解决方法
方法1:调整CSV读取参数
你导入异常是因为CSV第一列的行标识(寄生状态0/1)未被识别为行名,添加row.names = 1参数即可:
ct2 <- read.csv("C:\\Users\\Asus R541u\\Desktop\\Master Thesis\\R3\\Habitatuse\\Ct.csv", header = TRUE, row.names = 1, sep = ",")
读取后直接用as.matrix(ct2)即可得到可用于分析的矩阵格式。
方法2:将已导入的异常数据转为列联表
如果已经将数据读入R,可通过以下代码转换格式:
# 提取数值列转为矩阵,将第一列设为行名 ct_mat <- as.matrix(ct2[, -1]) rownames(ct_mat) <- ct2[, 1] # 转为R标准列联表对象 ct_table <- as.table(ct_mat)
方法3:直接在R中手动构建列联表
如果表格维度较小,直接手动构建更稳妥,避免文件读取的异常:
ct_mat <- matrix( # 按行顺序填入你表格中的实际数值,示例如下 c(23, 17, 12, 31, 29, 22), nrow = 2, byrow = TRUE, dimnames = list( Parasitation = c("0", "1"), Habitat = c("Bamboo", "Open", "Rhododendron") ) ) ct_table <- as.table(ct_mat)
补充说明
后续做泊松GLM分析时,可直接将列联表转为长格式数据框拟合模型:
ct_df <- as.data.frame(ct_table) model <- glm(Freq ~ Parasitation * Habitat + Year, family = poisson, data = ct_df)
如果有原始的单条样本记录,也可以直接用原始数据拟合,不需要提前构建列联表:
model <- glm(Parasitation ~ Habitat + Year, family = poisson, data = 原始样本数据框)
内容的提问来源于stack exchange,提问作者RBiology
相关产品推荐
相关产品推荐

