85 votes

Sélectionnez uniquement les lignes si leur valeur dans une colonne particulière est inférieure à la valeur dans l'autre colonne

J'utilise R et j'ai besoin de sélectionner des lignes dont l'âge (âge du décès) est inférieur ou égal à laclen (durée de la lactation). J'essaie de créer une nouvelle trame de données pour n'inclure que des lignes/identifiants dans lesquels la valeur de la colonne'aged' est inférieure à sa valeur 'laclength' correspondante.

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

127voto

wkmor1 Points 1848
df[df$aged <= df$laclen, ] 

Ça devrait faire l'affaire. Les crochets vous permettent d'indexer en fonction d'une expression logique.

62voto

Jonathan Chang Points 6231

Vous pouvez également faire

subset(df, aged <= laclen)

14voto

Si vous utilisez le paquet dplyr, vous pouvez le faire :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X