среднее значение вектора с не менее n (> 1) непропущенными значениями, R - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу вычислить среднее значение вектора с пропущенными значениями, только если существует хотя бы несколько значений.Так, например, если только одно (или менее пяти) значений не пропущено, я хочу вернуть NA, но если у меня есть как минимум два (или более пяти) не пропущенных значения, я хочу вернутьсреднее.

Как я могу добиться этого, используя mean()?

Стандартное поведение mean() - либо вернуть NA, если отсутствует хотя бы одно значение, либо вернуть среднее значение, еслипо крайней мере одно значение не пропущено (я хочу что-то среднее):

x = c(1, 2, NA, NA)

mean(x)   # returns NA if there is one (or more) value missing
[1] NA

mean(x, na.rm = T) # returns the mean of the existing values (if there is at least one)
[1] 1.5

В идеале я хотел бы, чтобы решение работало для сценария tapply(..., FUN = mean).

1 Ответ

1 голос
/ 03 апреля 2019

это один из способов использования функции ifelse:

x <- c(rep(NA_real_, 5), 1:4)

mean(x, na.rm = T)
[1] 2.5
ifelse(sum(!is.na(x)) > 5, mean(x, na.rm = T), NA_real_)
[1] NA
...