получить средний столбец A на основе диапазона значений в столбце B - PullRequest
6 голосов
/ 26 мая 2011

Мой фрейм данных имеет несколько столбцов:

df1 <- data.frame(A = c(1,2,4), B=c(1,3,1), C=c(1,1,3))

У меня есть два условия для получения средних значений для столбца A.

  • Условие 1: я хочу получить среднее значение для столбца A, когда B равно 1, т. Е. Будут усреднены только строки 1 и 2.
  • Условие 2: я хочу получить среднее значение для столбца B, когда значения столбца A больше 1, но меньше 3, то есть будет рассматриваться только строка 2.

Я знаю, что могу использовать фильтр, чтобы вырезать фрейм данных, чтобы иметь только столбец B = 1. Однако я не уверен, как это сделать, если я хочу, чтобы столбец B рассматривался как диапазон в пределах 1 и 3.

Существуют ли более разумные способы получения средних значений столбца, не разбивая сначала кадр данных на меньший размер?

Ответы [ 2 ]

7 голосов
/ 26 мая 2011

Вы можете выполнить поднабор в одном вызове для mean следующим образом:

with(df1, mean(A[B == 1]))

with(df1, mean(B[A > 1 & A < 3]))
2 голосов
/ 26 мая 2011

Вы можете объединить два логических теста с &.Таким образом, вы можете объединить тест B > 1 с B < 3:

# Condition A:
mean(df1$A[df1$B==1])

# Condition B:
mean(df1$B[df1$A>1 & df1$A<3])
...