我试图通过提取数据框中两列的整数值来对数据框进行子集处理。
Subs1<-subset(DATA,DATA[,2][!is.na(DATA[,2])] & DATA[,3][!is.na(DATA[,3])])
但是它给了我一个错误:长对象长度不是短对象长度的倍数。
我如何构建由列2和列3的非NA值组成的子集?
非常感谢!
我试图通过提取数据框中两列的整数值来对数据框进行子集处理。
Subs1<-subset(DATA,DATA[,2][!is.na(DATA[,2])] & DATA[,3][!is.na(DATA[,3])])
但是它给了我一个错误:长对象长度不是短对象长度的倍数。
我如何构建由列2和列3的非NA值组成的子集?
非常感谢!
试试这个:
Subs1<-subset(DATA, (!is.na(DATA[,2])) & (!is.na(DATA[,3])))
subset
的第二个参数是一个逻辑向量,长度与nrow(DATA)
相同,指示是否保留相应的行。na.omit函数可能是你问题的答案
Subs1 <- na.omit(DATA[2:3])
[https://stat.ethz.ch/R-manual/R-patched/library/stats/html/na.fail.html]
DATA[complete.cases(DATA), ]
用于仅保留每列没有缺失值的行。 subset
对象是这些具有完整数据的行。 a <- c(1,NA,2)
b <- c(NA,1,2)
c <- c(1,2,3)
DATA <- as.data.frame(cbind(a,b,c))
subset <- DATA[complete.cases(DATA), ]
DATA[complete.cases(DATA[, 2:3]), ]
这个表达式 - 它会选择列2和列3中没有NA的所有行。 - lukeA