Additionner les n dernières valeurs non NA dans chaque colonne d'une matrice dans R


user13710936

J'ai une matrice qui ressemble à ci-dessous:

x1<-c(1,2,3,4,5,6,NA)
x2<-c(1,2,NA,4,5,NA,NA)
x3<-c(1,2,3,4,NA,NA,NA)
x4<-c(1,2,3,NA,NA,NA,NA)
x5<-c(1,2,NA,NA,NA,NA,NA)
x<-cbind(x1,x2,x3,x4,x5)

Si je veux calculer les 3 dernières valeurs non NA de chaque colonne, et si une colonne a moins de 3 valeurs non NA (comme la colonne 5), alors je additionnerai toutes les valeurs non NA dans cette colonne. Je veux une sortie qui ressemble à

15 11 10 6 3

Je vous remercie!

GKi

Vous pouvez utiliser applyavec tailpour résumer le dernier non NAlike:

apply(x, 2, function(x) sum(tail(x[!is.na(x)], 3)))
#x1 x2 x3 x4 x5 
#15 11  9  6  3 

Articles connexes


Boucle For pour additionner chaque colonne d'une matrice dans R

poursuivre en justice Pour la matrice suivante: my_matrix<-matrix(seq(from=1,to=100,by=2)) Si je voulais calculer la somme de chaque colonne, je mettrais simplement la commande comme suit: colSums(my_matrix) Cependant, je dois créer une équivalence colSums(my

additionner les valeurs bigint dans une colonne

amadain J'ai une table dans mysql (v 5.6.23) qui est décrite comme suit : mysql> describe as_dcm_testing; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+