Есть ли способ в R игнорировать "." в моих данных при расчете среднего / SD / etc - PullRequest
0 голосов
/ 31 марта 2020

У меня большой набор данных, который мне нужно рассчитать среднее / стандартное отклонение / мин / и максимум для нескольких столбцов. Набор данных использует "." чтобы обозначить, когда значение отсутствует для субъекта. При запуске функции mean или sd это заставляет R возвращать NA. Есть ли простой способ обойти это?

мой код - это просто

xCAL<-mean(longdata$CAL)
sdCAL<-sd(longdata$CAL)
minCAL<-min(longdata$CAL)
maxCAL<-max(longdata$CAL)

, но R вернет NA для всех этих переменных. Я получаю следующее сообщение об ошибке

Предупреждение: в mean.default (longdata $ CAL): аргумент не числовой c или логический: возвращающий NA

1 Ответ

2 голосов
/ 31 марта 2020

Вам нужно преобразовать ваши данные в число c, чтобы иметь возможность выполнять любые вычисления на них. Когда вы запустите as.numeric, ваш . будет преобразован в NA, который R использует для пропущенных значений. Затем все функции, о которых вы упоминаете, принимают аргумент na.rm, который может быть установлен в TRUE для удаления (rm) пропущенных значений (na).

Если ваши данные factor, вам нужно сначала преобразовать их в character, чтобы избежать потери информации , как описано в этом FAQ .

В целом, чтобы быть в безопасности, попробуйте следующее:

longdata$CAL <- as.numeric(as.character(longdata$CAL))
xCAL <- mean(longdata$CAL, na.rm = TRUE)
sdCAL <- sd(longdata$CAL, na.rm = TRUE)
# etc

Обратите внимание, что na.rm является свойством функции - это не маги c, которая работает везде. Если вы посмотрите на страницы справки для ?mean ?sd, ?min, et c., Вы увидите документированный аргумент na.rm. Если вы хотите удалить пропущенные значения в целом, функция na.omit() работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...