#r #conditional-statements #lapply #mean #sapply
#r #условные операторы #lapply #среднее #sapply
Вопрос:
Следующий код вернет среднее значение при условии, что месяцы больше 6.
mean(df[df$delta1>6, "delta1"], na.rm=T)
Теперь, как мне применить это для каждого столбца в фрейме данных?
df:
delta1 delta2 delta3
NA 2 3
4 NA 6
7 8 NA
10 NA 12
NA 14 15
16 NA 18
19 20 NA
Ответ №1:
Здесь полезно семейство функций apply:
sapply(df, function(x) mean(x[x>6], na.rm=T))
Ответ №2:
Мы можем установить значения в фрейме данных, которые меньше, чем равны 6 NA
, и подсчитать среднее значение colMeans
, игнорируя NA
значения.
df[df <= 6] <- NA
colMeans(df, na.rm = TRUE)
#delta1 delta2 delta3
# 13 14 15
Данные
df <- structure(list(delta1 = c(NA, 4L, 7L, 10L, NA, 16L, 19L), delta2 = c(2L,
NA, 8L, NA, 14L, NA, 20L), delta3 = c(3L, 6L, NA, 12L, 15L, 18L,
NA)), class = "data.frame", row.names = c(NA, -7L))
Комментарии:
1. Это здорово! Однако я хотел бы, чтобы каждый столбец был обусловлен. Если я беру среднее значение delta1, я хочу убедиться, что значения delta1> 6. Если я беру среднее значение delta2, я хочу убедиться, что значения delta2> 6. И т. Д
2. Я понимаю. Извините, я неправильно понял вопрос ранее. Посмотрите мой обновленный ответ, который, я думаю, должен сработать.