V1 と V2 の 2 つの列を持つデータフレームがあり、両方の列に A1、A2、A1+A2、A3 などのエントリがあります。
どちらかの列にもう一方の部分文字列が含まれている場合、行を削除したいと思います。したがって、たとえば、次のように行を削除したいと思います。
A1, A1+A2
A1+A2,A1
次のような行ではありません。
A1+A2, A3
私は現在このコードを使用しています:
subset(dat, !dat$V1 %in% dat$V2)
しかし、このコードは、A1/B1、A2-B2、A 02、A4 などの行を保持したい場合にそれらの行を削除します。
私はおそらく次のように、charmatchを使用できると考えています:
subset(dat, charmatch(dat$V1, dat$V2) == "NA")
しかし、これは空のデータフレームを返します。
このコードを実行して、charmatch が取り除くものを確認すると、次のようになります。
trial <- subset(dat, charmatch(dat$V1, dat$V2) != "NA")
A1/B1、A2-B2、A 02、A4 などの行を保持したい場合に表示されます。
A 02 にスペースがあることが問題だと思いますが、これを解決する方法がわかりません。
また、grep/grepl と正規表現を使用することも考えましたが、ある列の式を別の列に対して検索するときに、これが構文的にどのように見えるかわかりません。最初の列をベクトルに変換して使用しますか?
subset(dat, !grepl(V1vector, dat$V2))
?
何か案は?
データセットの一部を次に示します。
V1 V2
A3-B3 B3
A4/B4 A3-B3
A 28 A 05
A 28 A 06
A2-B2 A2
B 05 B1
そして、これは私がそれを次のようにしたいものです:
V1 V2
A4/B4 A3-B3
A 28 A 05
A 28 A 06
B 05 B1