R - 如果最后一个值为NA,则删除列

时间:2016-11-11 20:29:15

标签: r conditional-statements multiple-columns

如果最后一个值为NA,我想删除R数据框中的列。

示例数据框位于

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

我想获得以下输出(B和C列被删除,因为它们在最后一行中有NA值)

A   D
11  20
22  40
33  60
44  80

尝试但无法获得任何解决方案。感谢您的帮助。

2 个答案:

答案 0 :(得分: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), ])]

答案 1 :(得分:0)

na.omit()函数删除任何缺少数据的行。 pp&lt; - 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”删除整个列。