web-dev-qa-db-fra.com

sélectionne uniquement les lignes si sa valeur dans une colonne particulière est inférieure à celle de l'autre colonne

J'utilise R et dois sélectionner des lignes avec un âge (âge du décès) inférieur ou égal à laclen (durée de la lactation). J'essaie de créer un nouveau cadre de données pour n'inclure que les lignes/ID, la valeur de column'aged 'étant inférieure à la valeur correspondante de' laclength '.

df:
 id1   id2    laclen    aged
9830  64526    26       6 
7609  64547    28       0 
9925  64551     3       0 
9922  64551     3       5 
9916  64551     3       8 
9917  64551     3       8 
9914  64551     3       2 

la nouvelle trame de données devrait ressembler à ceci:

dfnew:
id1   id2    laclen    aged
9830  64526    26       6 
7609  64547    28       0 
9925  64551     3       0 
9914  64551     3       2

Toute aide serait appréciée!

Bazon

55
Bazon
df[df$aged <= df$laclen, ] 

Devrait faire l'affaire. Les crochets vous permettent d’indexer en fonction d’une expression logique.

90
wkmor1

Tu peux aussi faire

subset(df, aged <= laclen)
46
Jonathan Chang

Si vous utilisez le paquet dplyr, vous pouvez faire:

library(dplyr)
filter(df, aged <= laclen)
8