apxの「AD」列からのエントリがエントリと一致する1つのデータフレーム(「apx」)別のデータフレーム(「npx」)内の「AD」列に、一致した行からのSDエントリが他方の13単位内にあるANDである。複数の選択基準に一致する2つの異なるデータフレームの行に基づいて第3のデータフレームを構築する
私はSOに関するいくつかの異なるリファレンスを確認しましたが、第3のデータフレーム(およびその他の理由)を構築する必要があるため、回答が見つかりませんでした。
私の作業裁判はこれである...
npx <- data.frame(TN = c(111, "Z2", 4, "fox", 34256, 4782, "ZGJU45"),
SD=c(100, 200, 100, 600, 500, 115, 455),
AD=c("34YY", "37PD", "123M", "235W", "37PD", "123M", "1WW"))
apx <- data.frame(TN = c(222, "X34", 5, "bear", 47789, 37281, "VF456"),
SD = c(101, 201, 310, 450, 515, 660, 505),
AD = c("123M", "23XY", "5S S", "1WW", "27 30R", "14M", "37PD"))
注:ADのエントリ "123M" "1WW"、および "37PDは" APXにし、NPXに表示されます。これらの1番目と3番目はnpxで2回表示されます。
は要因が文字に変更されている保険をかけ:
i <- sapply(apx, is.factor)
apx[i] <- lapply(apx[i], as.character)
i <- sapply(npx, is.factor)
npx[i] <- lapply(npx[i], as.character)
私の第五試みが...(整数にSDエントリを強制的に)...私の以前の試行の
test5 <- apx[which(apx$AD == npx$AD &
as.integer(npx$SD) - as.integer(apx$SD) < 13)
%in% as.integer(npx$SD), ]
一つ....私は第三データフレームに探しています何
test3 <- apx[which(apx$AD == npx$AD &
as.integer(npx$SD) - as.integer(apx$SD) < 13)
%in% setequal(npx$SD, apx$SD), ]
れる....
第3行のnpxに123M(apxの第1行)があり、SDの対応するエントリが互いに13単位(100および101)内にあるので、3210 TN SD AD
[1] 222 101 123M
です。しかし、npxの123M(6行目)の2番目の発生時には、SDの対応するエントリの差は15単位離れています。実際には、npxのSDエントリがapxの対応するSDエントリよりも大きい(唯一の)<であるインスタンスだけを探しています。
[2] bear 450 1WW
1WW(APXの4行目)はNPXの最後の行に見出されるとSDに対応するエントリが互いに13単位(450及び455)内にあるからです。
[3] VF456 505 37PD
37PD(APXの最後の行)はNPXの第2行に見出されているが、対応するSD値が離れて13単位(200及び505)を超えているので、そのエントリが品質37PDがありません。しかし、npx(行5)の37PDの他の出現についての対応するSDのエントリーは、互いに13ユニット内にあり、それによって37PDが結果のデータフレームに現れることを予期する。
私は誰かが私にこれを行うための非常に簡単な方法を示すことを期待している歯を痛めつけていますが、むしろより多くの車輪を回転させるよりも恥ずかしいです。前もって感謝します。