1

私は次のデータを持っています。

df = data.frame(email_one=c("one@gkn.com","two@wern.com","three@fu.cin",
        "four@huo.com","five@hoi.com"), email_two=c("ten@hoinse.com",
        "four@huo.com","two@wern.com","five@hoi.com","six@ihoio.com"))

R を使用して、両方の列に表示される値、最初の列だけに表示される一意の値、および列 2 だけに表示される一意の値を選択できるかどうか疑問に思っています。

私は当初、これを Excel で理解しようとしていましたが、おそらく sqldf パッケージを使用しても、R にはより洗練されたソリューションがあると思います。できれば、さまざまな条件ステートメントでいっぱいのユーザー定義関数ではなく、組み込み関数を使用します (df$email_one == df$email_two)

誰かが私を正しい方向に向けるのを手伝ってくれますか?

4

1 に答える 1

4

これらの操作には組み込み関数があるのではないかと疑うのは当然でした。この場合、ヘルプページにいくつかの関連する関数intersect()setdiff()一緒に文書化された関数とが必要です。?intersect

# Elements present in both columns
intersect(df[[1]], df[[2]])
[1] "two@wern.com" "four@huo.com" "five@hoi.com"

# Elements of column 1 that are not in column 2 
setdiff(df[[1]], df[[2]])
[1] "one@gkn.com"  "three@fu.cin"

# Elements of column _2_ that are not in column _1_
setdiff(df[[2]], df[[1]])
[1] "ten@hoinse.com" "six@ihoio.com" 
于 2012-05-14T23:03:24.630 に答える