2016-12-09 65 views
0

鑑於數據[R dplyr從表中刪除 「<NA>」 列

d <- data.frame(g = sample(c(1:5,NA),100, replace = T) 
       ,o = sample(c("yes","no",NA),100, replace = T)) 

是否有一個循序漸進的方式爲以下內容:

s <- d %>% group_by(g, o) %>% 
    summarise(n = n()) %>% 
    ungroup() %>% 
    spread(o, n, fill=0) 
s %>% select(which(names(s)!="<NA>")) 

如果我這樣做:

s <- d %>% group_by(g, o) %>% 
    summarise(n = n()) %>% 
    ungroup() %>% 
    spread(o, n, fill=0) %>% select(-c("<NA>")) 

我收到錯誤:

Error in -c("<NA>") : invalid argument to unary operator 
+0

查找'is.na()'函數而不是使用'「」'。 – figurine

+0

我不知道'name()'也是這種情況' – Wietze314

+0

您可以使用返回刻度。 's%>%select( - \' \')' – Psidom

回答

2

名(一個或多個)給出

"g" "no" "yes" "<NA>" 

由於@Psidom的評論,以下的作品說。如果您使用引號與反勾號重要,這很重要。

s <- d %>% group_by(g, o) %>% 
summarise(n = n()) %>% 
ungroup() %>% 
spread(o, n, fill=0) %>% select(-`<NA>`)