2016-11-11 6 views
1

Я хочу удалить столбец (ы) в кадре данных R, если их последним значением является NA.R - Удалить столбец, если последнее значение равно NA

кадра Пример данных ниже

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

Я хотел бы получить следующий результат (колонка В и С упала, потому что они имели значения NA в последней строке)

A D 
11 20 
22 40 
33 60 
44 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

Альтернативно, 'tail (df, 1)' like 'df [,! Is.na (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

Это правда, но OP должен проверить, если * последняя строка * является 'NA' и удаляет только столбец в этом случае. Этот ответ удалит, если 'NA' происходит где угодно. – Gregor