我有以下数据。
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来选择两列中显示的值,仅显示在第一列中的唯一值,以及仅显示在第二列中的唯一值。
我最初试图在excel中解决这个问题,但我假设R中有一个更优雅的解决方案,甚至可能使用sqldf包。优选地具有内置函数而不是充满各种条件语句的用户定义函数 (df $ email_one == df $ email_two)
任何人都可以帮助我指出正确的方向。
答案 0 :(得分: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"