使用NA值对列进行子集

时间:2017-08-09 02:58:12

标签: r algorithm dataframe reshape

我有一个与此类似的数据框(不完全是这样),我正在尝试子集...我想删除前两列,最后两列,以及所有具有NA值的列...

df <- read.table(text="
          a     b    c    d      e      f       g      h
          1     5    6    NA     4      NA      7     9
          3     2    8    NA     9      NA      4     3
          6     5    2    NA     6      NA      1     1
     ",header=TRUE,stringsAsFactors = FALSE)

到目前为止,我只有这么远:

df[, (3:(ncol(df)-2))]

只删除前两个和后两个...但我无法弄清楚如何删除NA的列

1 个答案:

答案 0 :(得分:3)

我们可以使用colSums和sequence来创建逻辑向量来对列进行子集

i1 <- seq_along(df)
df[(!i1 %in% c(1:2, tail(i1,2))) & !colSums(is.na(df))]
#  c e
#1 6 4
#2 8 9
#3 2 6