education
соответствует длине data
, тогда как ahe2008
является подмножеством data
. Поэтому, когда вы передаете education
в качестве условия на ahe2008
, он создает NA (потому что это соответствующее значение в ahe2008 для этих элементов.
Вот более простой пример:
d1<-c(1:5)
d2<-c(1:5,1:5)
subset(d1,d2==1)
[1] 1 NA
Возможные решения заключаются в создании отдельных bachelor
векторов для каждого года или не в непрерывном подмножестве, а в использовании только нескольких условий, в которых они вам нужны.
Если вы пытаетесь не вводить полный data$something
каждый попробуйте использовать with()
, а еще лучше - пакет dplyr
.
Например, весь код, ведущий к последней строке, может быть заменен этим (при условии, что я ничего не пропустил) :
DHS <- mean(with(data,ahe[year>2000 & education>0])) -
mean(with(data,ahe[year<2000 & education>0]*(215.2/140.3))
(Если вы новичок в R, обратите внимание, что структура []
является более простым способом вызова на подмножестве).
Возможно, вы захотите использовать summary
, который даст вам мин, медиану, среднее и макс, и вам останется всего лишь sd
, чтобы добавить вручную .:
summary(with(data,ahe[year>2000]))