J'ai une grande table où j'ai calculé le nombre de comptes par sous-catégorie countsperc
(noms sous-catégorie non représentés) pour toutes les catégories (id
), puis la totale d'observations par catégorie (id
) dans la colonne sumofcounts
, et la proportion de la sous-catégorie à le total (counsperc/sumofcounts
) en apppropor
(proportions approximatives), qui doit être approximative (3 décimales).
Le problème est, la somme des proportions approximatives (old_sum
) pour les catégories (id
) doit être 1.000 au lieu de 0.999, etc.
Alors, je voudrais demander une méthode pour ajouter ou soustraire 0,001, sur un sous -item de la colonne apppropor
afin d'obtenir 1.000 toujours comme somme. Par exemple, dans row1 le nombre pourrait être 0,334 au lieu de 0,333
EDIT: Le but de la tâche n'est pas de produire uniquement une somme exacte de 1, qui n'a aucune utilité, mais de produire une entrée à un autre programme, ce qui considérez la colonne apppropor
telle quelle (ce qui nécessitera une somme de 1.000 par id
, voir le message d'erreur ci-dessous).proportions approximatives en préservant la somme (1 = 100%) en R
text1<-"
id countsperc sumofcounts apppropor
item1 1 3 0.333
item1 1 3 0.333
item1 1 3 0.333
item2 1 121 0.008
item2 119 121 0.983
item2 1 121 0.008
item3 1 44 0.023
item3 1 44 0.023
item3 41 44 0.932
item3 1 44 0.023
item4 1 29 0.034
item4 3 29 0.103
item4 1 29 0.034
item4 24 29 0.828"
table1<-read.table(text=text1,header=T)
library(data.table)
sums<-as.data.frame(setDT(table1)[, sum(`apppropor`), by = .(id)][,.(id, old_sum = V1)])
table1<-merge(table1,sums)
table1
chromEvol Version: 2.0. Dernière mise à jour Décembre 2013
Les probabilités de comptage pour les taxons Ad_mic ne pas totaliser 1,0 chromEvol: errorMsg.cpp: 41: errorMsg static void :: reportError (string const &, int): Assertion `0' a échoué. Aborted (core dumped)
merci, mais l'accent est la colonne apppropor. voir modifier. – Ferroao