r - 使用 NA 值对列进行子集化

标签 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 的列

最佳答案

我们可以使用 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/

相关文章:

多线程 - 查询以显示处理一组进程所用的总时间

algorithm - 链表中的循环什么时候有用?

python - Pandas - 如何使用带有索引的字典对列的行进行排序

python - 过滤 BLAST 序列的数据帧以在每个集群中获得最大 pident_x

python - 在按 2 个字段分组的 DataFrame 中,从第一个分组字段内的第二个分组字段计算行 n 和 n-1 之间的差异

python - 填充数据框中缺失的行

r - 聚合方法以不同方式处理缺失值 (NA)

r - 关于重命名函数的问题

r - 使用 R 创建 2 个新变量,条件是保留前一行的值

algorithm - BFS(广度优先搜索算法)中的优先顺序