Calculer les âges en R
J'ai deux trames de données dans R. Une image a une des personnes à l'année de naissance:
YEAR
/1931
/1924
et puis une autre colonne affiche une époque plus récente.
RECENT
09/08/2005
11/08/2005
Ce que je veux faire est de soustraire les ans afin que je puisse calculer leur âge, en nombre d'années, mais je ne suis pas sûr de savoir comment aborder cette. Toute aide, s'il vous plaît?
source d'informationauteur Brian
Vous devez vous connecter pour publier un commentaire.
La fonction suivante prend un des vecteurs de la Date d'objets et calcule les âges, correctement comptables pour les années bissextiles. Semble être une solution plus simple que toutes les autres réponses.
Vous pouvez résoudre ce problème avec la lubridate paquet.
Je ne pense pas que /1931 est une commune de la classe date. Je vais donc assumer toutes les entrées sont des chaînes de caractères.
Tout d'abord, nous allons aviser R que les dernières dates sont des dates. Je pars du principe que les dates sont au format mois/jour/an, donc j'utilise mdy(). Si ils sont à jour/mois/année pour simplement utiliser dmy().
Maintenant, permet de tourner les ans dans les numéros de sorte que nous pouvons faire des calculs avec eux.
Maintenant il suffit de faire le calcul. année() extraits de la valeur de l'année de la RÉCENTE dates.
p.s. si votre année les inscriptions sont en fait plein de dates, vous pouvez obtenir la différence dans les années à
- Je utiliser une fonction personnalisée, voir code ci-dessous, pratique à utiliser dans le muter et très flexible (vous aurez besoin de la
lubridate
package).Exemples
Fonction
Vous pouvez faire un peu de mise en forme:
Avec vos données:
Puisque vous avez vos données dans un ensemble de données.cadre (je vais supposer que c'est appelé
df
), il sera plus comme ceci:Les données dans votre exemple:
Extrait année avec le
strptime
fonction:Basée sur la réponse précédente, convertir vos colonnes à la date d'objets et de soustraction. Certains de conversion de types entre le personnage et le numérique est nécessaire:
Remarque j'ai supposé que vous avez que la barre oblique dans votre colonne d'année.
Aussi, astuce pour quand vous posez des questions sur les dates, c'est d'inclure un jour est au-delà de la douzième donc, nous savons que si vous êtes un jour/mois/année personne ou jour/mois/année personne.
Je pense que cela pourrait être un peu plus intuitive et ne nécessite pas de mise en forme ou de décapage:
donne de sortie:
Ensuite, vous pouvez utiliser floor(), round(), ou au plafond() pour arrondir à un nombre entier.
Vraiment de manière solide qui supporte également les vecteurs à l'aide de la
lubridate
package:Présente également des comptes pour les années bissextiles. Je viens de vérifier, si quelqu'un a eu un anniversaire déjà.