删除dplyrpipe道中的NA

我试图用dplyrpipe道从子集中删除NA。 我的答案是错过了一个步骤。 我试图学习如何使用dplyr编写函数:

> outcome.df%>% + group_by(Hospital,State)%>% + arrange(desc(HeartAttackDeath,na.rm=TRUE))%>% + head() Source: local data frame [6 x 5] Groups: Hospital, State 
                           医院国家心脏病攻击
 1 ABBEVILLE地区医疗中心SC NA
 2 ABBEVILLE GENERAL HOSPITAL LA NA
 3 ABBOTT西北医院MN 12.3
 4德国ABILENE区域医疗中心17.2
 5 ABINGTON MEMORIAL HOSPITAL PA 14.3
 6亚伯拉罕林肯纪念医院IL NA
variables未显示:HeartFailureDeath(dbl),PneumoniaDeath
   (DBL)

我不认为desc需要一个na.rm论点…我真的很惊讶它不会抛出一个错误,当你给它一个。 如果您只想删除NA ,请使用na.omit

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

如果您只想从HeartAttackDeath列中删除NA ,请使用is.na过滤:

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

正如在dupe指出的, complete.cases也可以使用,但是把一个链接放在一个比较棘手的地方是因为它把一个数据框作为参数,但是返回一个索引向量。 所以你可以像这样使用它:

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