2014-10-30 5 views
39

Ho provato a rimuovere NA dal sottoinsieme utilizzando le pipe dplyr. La mia risposta è un'indicazione di un passaggio mancato. Sto cercando di imparare a scrivere le funzioni utilizzando dplyr:Rimozione NA nel tubo dplyr

> outcome.df%>% 
+ group_by(Hospital,State)%>% 
+ arrange(desc(HeartAttackDeath,na.rm=TRUE))%>% 
+ head() 
Source: local data frame [6 x 5] 
Groups: Hospital, State 
 
          Hospital State HeartAttackDeath 
1  ABBEVILLE AREA MEDICAL CENTER SC    NA 
2  ABBEVILLE GENERAL HOSPITAL LA    NA 
3  ABBOTT NORTHWESTERN HOSPITAL MN    12.3 
4 ABILENE REGIONAL MEDICAL CENTER TX    17.2 
5  ABINGTON MEMORIAL HOSPITAL PA    14.3 
6 ABRAHAM LINCOLN MEMORIAL HOSPITAL IL    NA 
Variables not shown: HeartFailureDeath (dbl), PneumoniaDeath 
    (dbl) 
+0

Penso che tu abbia la libreria sbagliata lì. Dov'è il dato? –

+1

Perché non 'na.omit'? – isomorphismes

+1

C'è anche http://stackoverflow.com/questions/22353633/filter-for-complete-cases-in-data-frame-using-dplyr-case-wise-deletion/37031161#37031161 che risponde alla stessa domanda. –

risposta

75

Non credo desc prende un argomento na.rm ... Sono davvero sorpreso che non genera un errore quando si dammelo. Se si desidera solo per rimuovere NA s, utilizzare na.omit:

outcome.df %>% 
    na.omit() %>% 
    group_by(Hospital, State) %>% 
    arrange(desc(HeartAttackDeath)) %>% 
    head() 

Se si desidera rimuovere NA s dalla colonna HeartAttackDeath, filtro con is.na:

outcome.df %>% 
    filter(!is.na(HeartAttackDeath)) %>% 
    group_by(Hospital, State) %>% 
    arrange(desc(HeartAttackDeath)) %>% 
    head() 

Come osservato in vittima, È anche possibile utilizzare complete.cases, ma è un po 'più complicato inserire una catena perché accetta un frame di dati come argomento ma restituisce un vettore di indice. Quindi potresti usarlo in questo modo:

outcome.df %>% 
    filter(complete.cases(.)) %>% 
    group_by(Hospital, State) %>% 
    arrange(desc(HeartAttackDeath)) %>% 
    head() 
+0

Grazie mille. Ho usato na.omit per tutte le colonne e ha funzionato. result.df è un sottoinsieme di set di dati di grandi dimensioni. Sto cercando di classificare le condizioni nell'ordine dal meglio al peggio. – ITCoderWhiz

+0

Quando utilizzo na.omit in questo modo genera 'Errore nell'argomento na.omit.default()" oggetto "mancante, senza default' anche se lo alimento con hflights. Stesso comportamento con! Is.na (hflights) nel secondo stadio del tubo ... @ ITCoderWhiz – d8aninja

+0

@ D8Amonk sembra che si abbia un mascheramento di funzione attivo. Da una nuova libreria 'di sessione R (dplyr); biblioteca (hflights); x = hflights%>% na.omit() 'funziona bene. Forse hai caricato un pacchetto che ha la sua funzione 'na.omit'? – Gregor