В Calculating percentiles by factor using ave() in r я спросил, как вычислить процентили в пределах функции ave()
. С завершением этой задачи я столкнулся с более сложной задачей.Расчет AVERAGEIF в R по уровню фактора
Возьмите следующие данные:
DistrictName Building Name X2.Yr.AVG Thirty Seventy
Ionia Public Schools Emerson -0.337464323 -0.196387489 -0.046524185
Ionia Public Schools Jefferson -0.318673587 -0.196387489 -0.046524185
Ionia Public Schools Ionia Middle -0.290854669 -0.196387489 -0.046524185
Ionia Public Schools Ionia Middle -0.288202752 -0.196387489 -0.046524185
Ionia Public Schools Twin Rivers El -0.23426755 -0.196387489 -0.046524185
Ionia Public Schools R.B. Boyce El -0.202319963 -0.196387489 -0.046524185
Ionia Public Schools Twin Rivers El -0.142995221 -0.196387489 -0.046524185
Ionia Public Schools Emerson -0.141620372 -0.196387489 -0.046524185
Ionia Public Schools Jefferson -0.141407078 -0.196387489 -0.046524185
Ionia Public Schools R.B. Boyce El -0.115530249 -0.196387489 -0.046524185
Ionia Public Schools Ionia Middle -0.111449269 -0.196387489 -0.046524185
Ionia Public Schools Twin Rivers El -0.054918339 -0.196387489 -0.046524185
Ionia Public Schools Jefferson -0.045591501 -0.196387489 -0.046524185
Ionia Public Schools A.A. Rather 0.002251298 -0.196387489 -0.046524185
Ionia Public Schools R.B. Boyce El 0.020669633 -0.196387489 -0.046524185
Ionia Public Schools Emerson 0.065064968 -0.196387489 -0.046524185
Ionia Public Schools A.A. Rather 0.182776319 -0.196387489 -0.046524185
То, что я пытаюсь сделать что-то похожее на то, что AVERAGEIF
функции в Excel. В Excel я могу сказать =AVERAGEIF(C2:C18, "<-.196387489")
, который выплескивает среднее значение -0.278630474. Мне нужно что-то в R, которое позволяет мне сделать следующее: я хочу создать новые переменные для среднего значения: 1) любые значения X2.Yr.AVG
, которые меньше значения Thirty
2) любые значения, которые больше, чем Значение Seventy
Уловка заключается в том, что мне нужно выполнить эту операцию в большом кадре данных с 722 уровнями для коэффициента DistrictName
. На этапе расчета процентилей, я использовал функцию ave()
для создания процентилей в соответствии с требуемым коэффициентом следующим образом:
MATHgap$Thirty<-ave(MATHgap$X2.Yr.AVG, MATHgap$DistrictName,
FUN= function(x) quantile(x, 0.3))
и
MATHgap$Seventy<-ave(MATHgap$X2.Yr.AVG, MATHgap$DistrictName,
FUN= function(x) quantile(x, 0.7))
Есть ли способ сделать что-то похожее на СРЕБ в ave()
, чтобы операция повторялась для каждого значения DistrictName
независимо от других? I.e, государственные школы Ionia должны иметь среднее значение для меньше -0.196387489 и для X2.Yr.AVG
больше, чем -0.046524185, и я хочу иметь возможность выполнять ту же функцию для всех районов, используя их соответствующие значения для , Thirty
и Seventy
.
Если это сбивает с толку, извини.
'по формуле (X2.Yr.AVG, MATHgap $ DistrictName, функция (х) {р = квантиль (х, с (0.3, 0.7)); среднее (x [(x> p [1] & x
Vlo