首页 文章

不使用列名称对数据框进行子集化

提问于
浏览
3

我需要通过引用列号来做到这一点 .

data <- data.frame(col1= c(50, 20, NA, 100, 50), 
                   col2= c(NA, 25, 125, 50, NA),
                   col3= c(NA, 100, 15, 55, 25),
                   col4= c(NA, 30, 125, 100, NA),
                   col5= c(80, 25, 75, 40, NA))

假设我想要对数据帧进行子集化,并且只保留在第5列中有效数字之前包含3个连续NA的行 . 最好我可以在不使用列名的情况下提出这个:

sub <- data[(which(is.na(data[2]) & 
                   is.na(data[3]) & 
                   is.na(data[4]) & 
                   !is.na(data[5]))), ]

有人看到任何问题或知道更好的方法吗?我担心在子集中使用子集虽然每件事看起来都应该正常工作 .

1 回答

  • 4

    如果您希望稍微压缩一下代码,可以执行以下操作:

    > data[rowSums(is.na(data[2:4])) == 3 & !is.na(data[5]), ]
      col1 col2 col3 col4 col5
    1   50   NA   NA   NA   80
    

相关问题