回答:
これは、as.data.frame()を使用してマトリックスをデータフレームに変換すると、より簡単になります。その場合、以前の回答(サブセットまたはm $ threeを使用)は機能しますが、それ以外の場合は機能しません。
マトリックスで操作を実行するには、名前で列を定義できます。
m[m[, "three"] == 11,]
または番号で:
m[m[,3] == 11,]
1行のみが一致する場合、結果は行列ではなく整数ベクトルになることに注意してください。
m[m[,3] == 11,,drop=FALSE]
df <- df[!which(df$ARID3A:df$YY1 == "U"),]
、ここでは、列の範囲(ARID3A:YY1)に値Uが含まれているdfからこれらの行を削除します。
サブセットは非常に遅い関数で、個人的には役に立たないと思います。
私はあなたがdata.frame、配列と呼ばれる行列持っていると仮定Mat
してA
、B
、C
列名などを; その後、あなたがする必要があるのは:
1つの列に1つの条件がある場合、列Aとしましょう
Mat[which(Mat[,'A'] == 10), ]
異なる列に複数の条件がある場合は、ダミー変数を作成できます。仮定条件はA = 10
、B = 5
とC > 2
我々は持っています:
aux = which(Mat[,'A'] == 10)
aux = aux[which(Mat[aux,'B'] == 5)]
aux = aux[which(Mat[aux,'C'] > 2)]
Mat[aux, ]
で速度の利点をテストすることによりsystem.time
、このwhich
方法は方法よりも10倍高速になりsubset
ます。
[ ]
答えの間でコードを実行すると、これがよりはっきりとわかります。