我有一个与此类似的数据框(不完全是这样),我正在尝试子集...我想删除前两列,最后两列,以及所有具有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的列
答案 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