私は比較したい電子メールデータを持っています。データを収集するには、別々のテーブルから送信、配信、公開などを引き出す必要があったので、基本的に同じ情報を持つ5つのデータフレームがありますが、送信テーブルには100%のユーザーIDが郵送されています。配信、オープンなどのテーブルには、同じ変数/列が含まれていますが、メールを送信したすべての人がそれを開いたりクリックしたりしていないため、行の数は少なくなります。R:2つのテーブルの列を比較して欠損値を比較し、新しい列にTrue Falseを生成します。
これをすべて送信データフレームに組み込み、USER IDが後続の表に存在するかどうかを比較することによって、そのユーザーが電子メールを受信したかどうかを示すY/Nの新しい列を作成し、それを開いてクリックした。一種のセミジョインですが、最初のテーブルに新しいUSER IDが他のテーブルに存在するかどうかを示す列を作成したいだけです。簡略化された例では、私は下の2つの表のそれぞれから最初の列を持っています。
Sent USER ID 1 3 17 26 35 124
Deliv? Y N Y N Y Y
Delivered USER ID 1 17 35 124
突然変異を使用して試してみましたが、ifelseを使って試しましたが、これまでのサイコロはありませんでした。
ありがとうございます!
お礼ありがとうございます。私が言及しておきたい、ここでの唯一の課題は、私が800Kレコードで作業していることです。値を1つずつ入力することはできません。列に名前を付けるだけの方法はありますか?または、少なくともそれらをベクターにプルして、それらの方法で作業しますか? –
ラベル「N/Y」は正しいですか?もしあなたがいつも列に名前をつけることができれば、上の変数 'x'と' y'はそれらの列の名前とみなされます。あなたは 'Delivered $ USER_ID'で' Sent $ USER_ID% 'を実行できます。 –
ルイ、私は 'カラムの名前を'と言いました。私の理想的な解決策は、単に「送信済み」ファイルに1つの新しい列を追加するだけで、「送信済み」のユーザーID(行)が「配信済み」に一致した場合、そのユーザーIDの新しい列にYが入力されます。'送信者'のユーザーIDが配信されたファイルに一致しない場合、その行はN値を取得します。それは理にかなっていますか? %関数で%を使用した後のように見えますが、TRUE/FALSEとなり、Y/Nの代わりに機能します。だからあなたの解決策が働いているように見えますが、それが私が思っていることをしていることを確認したいだけです。 –