2015-11-04 74 views
4

我有以下的數據幀可以稱之爲DF過濾基於數據幀NA上多列

id type company 
1 NA  NA 
2 NA  ADM 
3 North Alex 
4 South NA 
NA North BDA 
6 NA  CA 

我想只保留那些沒有NA列「類型」和「公司」的記載

id type company 
3 North Alex 
NA North BDA 

我累

df_non_na <- df[!is.na(df$company) || !is.na(df$type), ] 

但這並沒有工作。

在此先感謝

+0

'DF [complete.cases(DF),]'? – 2015-11-04 11:37:36

+2

或以前用單個'|'。即:'df [!is.na(df $ company)| !is.na(df $ type),]' – 2015-11-04 11:38:04

+0

我認爲這將刪除「id」爲NA的情況 –

回答

4

我們可以得到的邏輯索引兩列,使用&和子集的行。

df1[!is.na(df1$type) & !is.na(df1$company),] 
# id type company 
#3 3 North Alex 
#5 NA North  BDA 

或者使用rowSums上的邏輯矩陣(is.na(df1[-1]))到子集。

df1[!rowSums(is.na(df1[-1])),] 
+1

Dena回答說,我只需要使用「|」而不是「||」, –

+0

但1'''不會給你所需的輸出。 –

+0

單個「|」工作 –

-1

可以使用

na.omit(data_frame_name) 
+0

這將消除具有* any *'NA'值的行 - 已接受的答案已經完成了工作,問題已得到解決。 – lefft

+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/18744410) – sergiuz