我有一个类似于这个(不完全是这个)的数据框,我正在尝试对其进行子集...我想删除前两列,最后两列以及所有具有 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 的列
最佳答案
我们可以使用 colSums
和序列来创建一个逻辑向量来对列进行子集化
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
关于r - 使用 NA 值对列进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45580964/