Вот набор данных
data <- t(data.frame(met1 = c(2,2,2,2,2),
met2 = c(5,4,NA,2,1),
met3 = c(2,2,2,NA,2),
met4 = c(2,4,6,8,6),
met5 = c(1,3,4,7,2)))
Это дает:
[,1] [,2] [,3] [,4] [,5]
met1 2 2 2 2 2
met2 5 4 NA 2 1
met3 2 2 2 NA 2
met4 2 4 6 8 6
met5 1 3 4 7 2
Я часто выполняю построчную коррекцию в моем наборе данных. Которые делят все значения после суммирования, что означает, что все значения находятся в диапазоне от 0 до 1.
data <- data / rowSums(data, na.rm = TRUE)
Это прекрасно работает, когда нет отсутствующих данных. Но, как вы можете видеть при сравнении met1
и met3
, каждое значение met3
значительно выше, чем met1
из-за отсутствующих данных.
[,1] [,2] [,3] [,4] [,5]
met1 0.20000000 0.2000000 0.2000000 0.2000000 0.20000000
met2 0.41666667 0.3333333 NA 0.1666667 0.08333333
met3 0.25000000 0.2500000 0.2500000 NA 0.25000000
met4 0.07692308 0.1538462 0.2307692 0.3076923 0.23076923
met5 0.05882353 0.1764706 0.2352941 0.4117647 0.11764706
Как можно компенсировать этот эффект? В настоящее время я удалил все столбцы с отсутствующими данными, но предпочитаю не делать этого, поскольку некоторые важные данные могут быть удалены.