2016-11-11 36 views
1

最後の値がNAの場合、Rデータフレームの列を削除します。R - 最後の値がNAの場合は列を削除します

例示的なデータフレームは、私は、次の出力を取得したい(カラムBおよびCがドロップ彼らが最後の行にNA値を有していたので)

A D 
11 20 
22 40 
33 60 
44 80 

を試みたが、couldn

A B C D 
11 10 19 20 
22 20 29 40 
33 30 39 60 
44 NA NA 80 

未満であります何か解決策が得られない。あなたの助けに感謝。

+1

http://stackoverflow.com/questions/12454487/remove-columns-from-dataframe-where-some-of-values-are-na –

+6

'df [、!is.na(df [nrow(df) 、])] ' – alistaire

答えて

3
# Data 
df <- read.table(text="A B C D 
         11 10 19 20 
         22 20 29 40 
         33 30 39 60 
         44 NA NA 80", header=TRUE) 

df[-which(is.na(df[nrow(df), ]))] 

    A D 
1 11 20 
2 22 40 
3 33 60 
4 44 80 

# Suggestion from @alistaire 
df[, !is.na(df[nrow(df), ])] 
+0

' -which'の代わりに '!'だけ使うことができます。 – alistaire

+3

また、 'df [、!is.na(tail(df、1))]]のような' tail(df、1) '] – Frank

+1

間違いの申し訳ありません。 'nrow(df)'にする必要があります。 – JasonWang

0

na.omit()関数は、データが欠落している行を削除します。 pp < - data.frame(po = c(10,20,30,40、NA)、pi = c(45,65,75,55,85)) pp na.omit(pp) - 削除行全体

na.delete(pp ["po"])---列全体を「NA」で削除します。

+0

これは当てはまりますが、最後の行*が「NA」である場合にOPがテストする必要があり、その場合にのみ列が削除されます。この答えは、「NA」がどこにでもあれば削除されます。 – Gregor

関連する問題