Tour de .5

Oui, je sais pourquoi nous avons toujours arrondir au plus proche nombre pair si nous sommes dans le milieu exact (c'est à dire 2.5 devient 2) de deux nombres. Mais quand je veux évaluer des données pour certaines personnes, ils ne veulent pas de ce comportement. Quelle est la méthode la plus simple pour obtenir ceci:

x <- seq(0.5,9.5,by=1)
round(x)

à 1,2,3,...,10 et pas 0,2,2,4,4,...,10.

Edit: Pour clearify: 1.4999 devrait être de 1 après l'arrondissement. (Je pensais que ce serait évident)

  • Suis-je en droit de penser que vous voulez des valeurs <= 0,4 à tour à 0 et les valeurs >= 0,5 à arrondir à 1?
  • sont-ils vraiment? Pouvez-vous développer? Que round cartes n + .5 à n semble arbitraire pour moi.
  • Il est facile de simuler. Basé sur la séquence x à partir de ci-dessus essayez mean(x); mean(round(x)); mean(floor(0.5 + x)). Bien sûr, ce n'est pas une preuve tout ce que ce ne pouvait être qu'un cas particulier. Mais regardez cela de cette façon: Si nous autour de chaque x.5 bien sûr, nos données arrondies qu'est biaisée. Si nous arrondissons à chaque seconde.x.5 nous contrecarrer cet effet. C'est pourquoi nous avons tour à l'autre, même numéro.
  • Comapre sum(seq(0.5,1e3,by=0.5)) avec les sommes de chacune des arrondis versions des séquences
  • Pour ne pas mentionner que "l'arrondi à la même chiffres" est l'IEC 60559 standard comme mentionné dans ?round .
InformationsquelleAutor jakob-r | 2012-10-02