在R语言中如何为数据框分别计算行均值与列均值?
在R中为数据框添加行均值与列均值
实现步骤
- 添加行均值列
针对每行的基因型数值计算均值,跳过字符型的Env列,用rowMeans()快速实现:
# 计算每行的基因型均值并添加为新列 dataB$mean <- rowMeans(dataB[, c("Genotype1", "Genotype2")])
执行后数据框变为:
Env Genotype1 Genotype2 mean 1 Env1 7 9 8 2 Env2 3 5 4
- 添加列均值行
计算基因型列的整体均值,构造以"mean"为标识的行,再合并到原数据框末尾:
# 计算两个基因型列的均值 geno_col_means <- colMeans(dataB[, c("Genotype1", "Genotype2")]) # 构造要添加的行,mean列留空(或设为NA) mean_row <- data.frame( Env = "mean", Genotype1 = geno_col_means[1], Genotype2 = geno_col_means[2], mean = NA ) # 合并到原数据框 dataB <- rbind(dataB, mean_row)
最终得到的结果和需求完全一致:
Env Genotype1 Genotype2 mean 1 Env1 7 9 8 2 Env2 3 5 4 3 mean 5 7 NA
简化版代码
如果想更简洁,可以把两步合并:
# 添加行均值 dataB$mean <- rowMeans(dataB[, -1]) # 添加列均值行 dataB <- rbind(dataB, data.frame( Env = "mean", t(colMeans(dataB[, 2:3])), mean = NA ))
内容的提问来源于stack exchange,提问作者J.K Kim
相关产品推荐
相关产品推荐

