1

データ フレームがあり、観測値が 1000 未満のすべての列を削除したいと考えています。以下のアプローチは問題なく機能しますが、もっとエレガントなソリューションはありますか?

vec <- numeric()

for(i in 1:ncol(dat))
{
    if(length(dat[,i][!is.na(dat[,i])]) >= 1000) 
        vec <- c(vec, i)
}

dat <- dat[,vec]
4

1 に答える 1

7

これはうまくいくはずです:

dat[,colSums(!is.na(dat))>=1000]

ここでは、最初にどの要素datが noNAであるかを調べ、この新しいデータ フレームの列の合計を計算します。少なくとも 1000 個の観測値を含む列と、それ以外の列について取得TRUEしますFALSEdatしたがって、元のデータ フレームをサブセット化するインデックス変数として使用できます。

于 2013-03-18T17:34:18.757 に答える