我有一个矩阵,其中有许多列,其中所有值都是NA
。
所以我想省略所有完全NA
的列。那我怎么能这样做呢?
答案 0 :(得分:3)
我假设您只想省略所有观察值为NA
的列;你的问题有些含糊不清。
此代码省略了完全NA
的列,对于矩阵x
,仅返回至少有一个非NA
值的列:
x[,apply(!is.na(x),2,any)]
答案 1 :(得分:2)
mtx[ , -which( colSums(is.na(mtx)) == nrow(mtx) ) ]
如果您想要排除超过50%NA条目的列,那么:
mtx[ , -which( colSums(is.na(mtx)) > nrow(mtx)/2 ) ]
答案 2 :(得分:1)
您可以使用函数“na.omit()”删除包含NA观测值的行。此函数删除行并返回没有NA的数据帧。
如果您希望删除每个观察包含NA的列...
我不确定是否有内置的R函数来执行此操作。但是,我们可能会考虑使用某种用户定义的流程来删除具有最多NA的列...
### Assume 'df' is your data frame with observational data:
### Apply a function to check whether each observation contains an NA
count <- sapply(df, is.na)
### Within each column, ask for the number of missing observations
count <- colSums(count)
### Ask R which columns have the most missing observations
index <- which.max(count)
### Subset 'df' to exclude columns with the most NA's
df <- df[, -index]