2

説明のための例を次に示します。

x = data.frame(x1=1:3, x2=2:4, x3=3:5)
x
#   x1 x2 x3
# 1  1  2  3
# 2  2  3  4
# 3  3  4  5
x[2, 1] = NA
x[3, 2] = NA
complete.cases(x)
# [1]  TRUE FALSE FALSE
x[complete.cases(x), , drop=FALSE]
#   x1 x2 x3
# 1  1  2  3

完全なケースではなく、完全な変数 (列) をフィルター処理したい場合はどうすればよいですか? 上記の例では、次のようになります。

x[,3,drop=FALSE]
#   x3
# 1  3
# 2  4
# 3  5
4

5 に答える 5

5

またはこのようなもの:

 x[, complete.cases(t(x)), drop=FALSE] # Tks Simon
于 2013-05-02T14:42:11.260 に答える
1

sapply列の欠損値をチェックし、その結果を使用してサブセット化するために使用できます。

x[sapply(x,function(y) !any(is.na(y)))]
  x3
1  3
2  4
3  5
于 2013-05-02T15:33:07.077 に答える
0

ここにはよりクリーンな戦略があると確信していますが、次の関数も機能すると思います。

x = data.frame(x1=1:3, x2=2:4, x3=3:5)
x[2, 1] = NA
x[3, 2] = NA

complete.cols = function(dat){   
  non.missing.test = apply(dat,2,function(t){sum(is.na(t))==0})
  dat.complete.cols = data.frame(dat[,which(non.missing.test == TRUE)])
  names(dat.complete.cols) = names(dat)[which(non.missing.test == TRUE)]
  return(dat.complete.cols)
}

complete.cols(x)
于 2013-05-02T14:34:47.430 に答える
0

この小さな関数は動作するはずです:

for (a in c(1:length(x))){
    ifelse(TRUE%in%is.na(x[,a]),print ('INCOMPLETE'),print ('COMPLETE'))
}
于 2013-05-02T14:48:16.583 に答える