J'ai un exemple de cadre de données ci-dessous où chaque jour des month
et precip
sont enregistrés.Utilisation de tidyverse, somme des valeurs conditionnellement sur les distributions dans chaque sous-ensemble
set.seed(560)
df<-data.frame(month= rep(1:4, each=30),
precip= rep(c(rnorm(30, 20, 10), rnorm(30, 10, 2),
rnorm(30, 50, 1), rnorm(30, 15, 3))))
Pour chaque sous-ensemble, je tiens à compter le nombre de cas, une valeur a été +/- 2 écarts-types (SD) supérieure ou inférieure à la moyenne des valeurs precip
de ce mois. Essentiellement, je dois trouver des valeurs aux extrêmes de la distribution des valeurs (c'est-à-dire les queues de la distribution). Cette colonne de résultat s'appellera count
.
La sortie se présente comme suit pour cet exemple ensemble de données:
set.seed(560)
output<-data.frame(month= rep(1:4, each=1), count= c(1,2,1,1))
Avis pour le mois 1 valeurs ci-dessus 35,969 et des valeurs inférieures à 2,61 sont à +/- 2éme de la moyenne. Une valeur (precip = 41,1) correspond à cette exigence. Preuve:
sub1<- subset(df, month==1)
v1<- mean(sub1$precip)+ 2*sd(sub1$precip)#35.969
v2<- mean(sub1$precip)- 2*sd(sub1$precip)#2.61
sub2<- subset(df, month==2)
v3<- mean(sub2$precip)+ 2*sd(sub2$precip)#13.89
v4<- mean(sub2$precip)- 2*sd(sub2$precip)#7.35
sub3<- subset(df, month==3)
v5<- mean(sub3$precip)+ 2*sd(sub3$precip)#51.83
v6<- mean(sub3$precip)- 2*sd(sub3$precip)#48.308
sub4<- subset(df, month==4)
v7<- mean(sub4$precip)+ 2*sd(sub4$precip)#18.69
v8<- mean(sub4$precip)- 2*sd(sub4$precip)#9.39
J'ai essayé:
output<-
df %>%
group_by(month)%>%
summarise(count= sum(precip > (mean(precip)+(2*sd(precip)))&
precip < (mean(precip)-(2*sd(precip))))))