2014-10-30 25 views
39

Tôi đã cố gắng loại bỏ NA khỏi tập hợp con bằng cách sử dụng đường ống dplyr. Câu trả lời của tôi là dấu hiệu của một bước bị bỏ lỡ. Tôi đang cố gắng tìm hiểu làm thế nào để viết các chức năng sử dụng dplyr:Xóa NA trong ống 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

Tôi nghĩ rằng bạn có thư viện sai ở đó. Dữ liệu ở đâu? –

+1

Tại sao không 'na.omit'? – isomorphismes

+1

Ngoài ra còn có http://stackoverflow.com/questions/22353633/filter-for-complete-cases-in-data-frame-using-dplyr-case-wise-deletion/37031161#37031161 trả lời cùng một câu hỏi. –

Trả lời

75

Tôi không nghĩ desc có một đối na.rm ... Tôi thực sự ngạc nhiên khi nó không ném ra một lỗi khi bạn cho nó một cái. Nếu bạn chỉ muốn loại bỏ NA s, sử dụng na.omit:

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

Nếu bạn chỉ muốn loại bỏ NA s từ cột HeartAttackDeath, bộ lọc với is.na:

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

Như đã chỉ ra ở dupe, complete.cases cũng có thể được sử dụng, nhưng nó là một chút phức tạp hơn để đặt trong một chuỗi bởi vì nó có một khung dữ liệu như một đối số nhưng trả về một vector chỉ mục. Vì vậy, bạn có thể sử dụng nó như thế này:

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

Cảm ơn nhiều. Tôi đã sử dụng na.omit cho tất cả các cột và nó hoạt động. result.df là tập con của tập dữ liệu lớn. Tôi đang cố gắng xếp hạng các điều kiện theo thứ tự từ tốt nhất đến tồi tệ nhất. – ITCoderWhiz

+0

Khi tôi đang sử dụng na.omit theo cách này nó ném 'Lỗi trong na.omit.default() đối số" đối tượng "là mất tích, không có mặc định' ngay cả khi tôi ăn nó hflights. Cùng một hành vi với! Is.na (hflights) ở giai đoạn thứ hai của đường ống ... @ ITCoderWhiz – d8aninja

+0

@ D8Amonk có vẻ như bạn có một số chức năng mặt nạ đang diễn ra. Từ thư viện phiên R mới (dplyr); thư viện (hflights); x = hflights%>% na.omit() 'hoạt động tốt. Có lẽ bạn đã tải một gói có hàm 'na.omit' riêng của nó? – Gregor

Các vấn đề liên quan