首页 > 解决方案 > 聚合数据框以获取均值标准误差时出错:“var 中的错误(if (is.vector(x) || is.factor(x))”

问题描述

我有一个数据集,我正在尝试汇总以查找 R 版本 3.6.0 中平均值 (SEM) 的平均值和标准误差。我已经对三种基因型(类型)进行了测量,因此我需要获取类型 1、2 和 3 的平均值和 SEM。

SEM 函数在这里定义:

sem <- function(x) sd(x)/sqrt(length(x))

这是数据:

data <- data.frame(
  type = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 1, 3, 3, 3, 1, 3, 
           2, 2, 1, 1, 1, 2, 2, 1, 3, 3, 3, 3, 2, 1, 2, 1),
  measurement = c(12, 14, 13, 13, 13, 12, 12, 14, 14, 12, 13, 14, 15, 14, 15, 
                  13, 15, 14, 15, 13, 13, 13, 13, 13, 13, 13, 12, 15, 12, 12, 15, 
                  13, 14, 13, 14, 12)
)

聚合平均值工作得很好:

mean <- aggregate(data, by=list(data$type), mean)

但是,当我尝试聚合 SEM 时,出现错误。我之前已经能够使用这个确切的代码成功实现这一点。我能做些什么来解决这个问题?我已经多次重启了 R 会话;它只是不想工作。

sem <- aggregate(data, by=list(data$type), sem)

#Resulting error:
Error in var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) : 
  Calling var(x) on a factor x is defunct.
  Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.

标签: raggregate

解决方案


推荐阅读