0
Mes données ressembleAffiner par des rangées et des colonnes de valeurs de somme
pos year A B
1 2012 1 1
1 2013 1 NA
2 2012 NA NA
2 2013 NA 1
I essayé de calculer la différence en pourcentage entre A et B pour chaque pos uniquement lorsque A et B ne sont pas NA.
ddply(x, .(pos), summarize, diff = ifelse(is.na(A)==FALSE & is.na(B)==FALSE,
(rowsum(A, pos, na.rm=TRUE)-rowsum(B, pos, na.rm=TRUE))/rowsum(A, pos, na.rm=TRUE),""))
Ainsi, les résultats devraient être
pos diff
1 0.5
2 NA
je ne fais pas partie qui est mal, mais mon code produit
pos diff
1 0.5
1
2
2
Toutes les idées seraient appréciées. Merci!
Est-ce ce que vous voulez ' 'd%>% Filtre ((is.na (A) et is.na (B)!))%>% group_by (pos)%>% muté (A1 = somme (A, na.rm = T), A2 = somme (B, na.rm = T))%>% mute (Dif = A1-A2, res = Dif/A1) ' – Jimbou
Salut. Merci pour la partie filtre. Mais la fonction rowsum fonctionne bien pour mon cas. –