【问题标题】:Filtering only unique value from multiple column in R仅从 R 中的多列中过滤唯一值
【发布时间】:2016-02-17 10:40:37
【问题描述】:

我有这样的数据:

X <- data.frame(fac_1 = c("A", "B", "C", "X", "Y"), fac_2 = c("B", "X", "P", "Q", "C"), fac_3 = c("C", "P", "Q", "T", "U"))

    fac_1 fac_2 fac_3
     A     B     C
     B     X     P
     C     P     Q
     X     Q     T
     Y     C     U

我只想要那些常见的字母

(1) fac_1 和 fac_2 之间(如 B、C、X)和

(2) fac_1、fac_2 和 fac_3 共有的所有因子(仅像 C 一样)

【问题讨论】:

  • 预期输出是什么?
  • @moto 我写在括号里。例如,对于情况 (a),预期输出是 B、C 和 X
  • 不清楚你想要实现什么,制作一个示例输出......
  • 看intersect(X$fac_1, X$fac_2)和Reduce(intersect, X)
  • @Sotos 我更正了。只是错别字

标签: r database filter


【解决方案1】:

你可以使用intersect

intersect(intersect(X$fac_1, X$fac_2), X$fac_3)
#[1] "C"
intersect(X$fac_1, X$fac_2)
#[1] "B" "C" "X"

或者,函数Reduce 可以按照@docendo discimus 在 cmets 部分的描述使用。

Reduce(intersect, X)
#[1] "C"

【讨论】:

  • 这个答案首先由@docendodiscimus 在评论中提供。我可以接受你的回答还是等他回复?
  • @Neeraj 因为答案是在发布前 1 分钟以上的评论中提供的(以避免任何可能的诉讼),最好咨询评论的人。
  • @akrun 我想我可以接受Sotos给出的答案,因为他提供了完整的答案。
  • @Sotos 你也可以在你的答案中添加这个作为替代方法。
  • 我不介意您是否在答案中包含 reduce 方法,因为我自己没有发布答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 2014-07-14
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 2013-01-24
  • 2020-10-08
相关资源
最近更新 更多