2017-04-10 1 views
0

Cela peut être une question très facile, mais je l'ai déjà traité depuis un certain temps.Extraire les valeurs des lignes où NaN est présent dans R

J'ai une trame de données dans laquelle la colonne X a des valeurs "NaN". J'ai besoin d'extraire les valeurs de ligne des colonnes A et B quand X est "NaN" et les mettre dans une nouvelle trame de données.

Je pense que la solution doit être quelque chose de similaire à ce instruction if, mais il ne fonctionne pas:

X = df$X 
A = df$A 
B = df$B 

NaNvalues <- if (is.nan(X)) { 
    data.frame(A, B) 
} 

Répondre

1
new_df <- df[is.nan(df$X), c("A","B")] 

devrait vous donner ce que vous recherchez. Ici, vous utilisez le vecteur des indices où la colonne X est NaN (générée par is.nan(df$X) pour indexer les lignes dans votre trame de données.

0

Vous pouvez utiliser la fonction qui:

nans <- which(is.na(X)) 

Vous aussi probablement envie de vous assurer que vous utilisez NaN/NA de façon appropriée. is.na et is.nan sont un peu différents. This post cleared it up for me.