У меня есть набор данных, который я пытаюсь объединить, чтобы найти среднее значение и стандартную ошибку среднего (SEM) в R версии 3.6.0. У меня есть три генотипа (типа), на которых я провел измерения, поэтому мне нужно взять среднее и SEM типа 1, 2 и 3.
Здесь определена функция 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.