内の行のサブセットにベクトルを比較:私はdata.frame「DAT」と数値ベクトル「テスト」を持っているdata.frame
code <- c("A22", "B15", "C03")
v.1 <- 1:3
v.2 <- 3:1
v.3 <- c(2, NA, 2)
bob <- c("yes", "no", "no")
dat <- data.frame(code, v.1, v.2, v.3, bob, stringsAsFactors = FALSE)
test <- c(3, 1, 2)
を私はどこdata.frame内の行を見つけたいです2番目から4番目の列( "v.1"、 "v.2"、 "v.3")は、ベクトルと同じ値を同じ順序で含み、 "code" -columnから値を返します(inこの場合 "C03")。
私は
dat[dat[, 2:4] == test]$code
と
動作しません。どちらもwhich(apply(dat, 1, function(x) all.equal(dat[, 2:4], test)) == FALSE)
を試してみました。
私は基本R.とソリューションを好むだろう私達はちょうど私たちは「コードが必要な場合は、比較
dat[2:4] == test[row(dat[2:4])]
を行う前に、長さが等しくなるようにする「テスト」を複製する必要が
row.names(サブセット(DAT、DATの$のV.1 ==テスト[1]&ダット$ v.2 == test [2]&dat $ v.3 == test [3]))は、必要な行を返します。これらの行の "code"値を知りたい場合は、subset()関数select = "code"に追加します。それはあなたに何を助けますか? –
@MarioM。それはうまくいきますが、その解決策では、data.frameのすべての列名と大規模なデータセットではやや不透明なベクトルのすべてのインデックスを入力する必要があります。 –
あなたの2番目のオプションで動作するようにするには: ''(apply(dat [、2:4]、1、function(x)all(x == test))) ' – Cath