我想知道是否有更好的方法可以做到这一点,或者我是否遇到了一些不可预见的麻烦。我需要从数据框中进行子集,但我不想使用列名。我需要通过引用列号来实现。
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))
假设我想要对数据帧进行子集化,并且只保留包含3个连续NAs的行,而不是第5列中的有效数字。最好我能提出而不使用列名是这样的:< / p>
sub <- data[(which(is.na(data[2]) &
is.na(data[3]) &
is.na(data[4]) &
!is.na(data[5]))), ]
有人看到这方面有任何问题或知道更好的方法吗?我担心在子集中使用子集,尽管每件事看起来都应该正常工作。
答案 0 :(得分:4)
如果您希望稍微压缩一下代码,可以执行以下操作:
> data[rowSums(is.na(data[2:4])) == 3 & !is.na(data[5]), ]
col1 col2 col3 col4 col5
1 50 NA NA NA 80