如何使用R根据共享元素对两个组进行排序?

如何使用R根据共享元素对两个组进行排序?,r,R,我有两个组(alpha和beta),我想用R得到1中的3个元素列表。只有阿尔法,2。只有测试版,3。两组都有。基本上是一个列表形式的维恩图。这里有一个例子: group color alpha red alpha blue alpha black alpha white alpha orange beta green beta white beta purple beta yellow beta black 因此,列表应该类似于: alph

我有两个组(alpha和beta),我想用R得到1中的3个元素列表。只有阿尔法,2。只有测试版,3。两组都有。基本上是一个列表形式的维恩图。这里有一个例子:

group   color
alpha   red
alpha   blue
alpha   black
alpha   white
alpha   orange
beta    green
beta    white
beta    purple
beta    yellow
beta    black
因此,列表应该类似于:

alpha: red, blue, orange 
beta: green, purple, yellow
both: black, white
假设我将数据保存在(制表符分隔的).txt文件或.csv文件(例如file.txt)中,我将如何导入/预处理数据,以及如何按照所述对元素进行排序?是否有需要事先安装的软件包?对不起,我知道有些步骤似乎很明显,但我的R技能有些有限

非常感谢你的帮助


p、 不重要,但“很高兴拥有”:如果我想对3个不同的组进行排序怎么办?

您可以使用
setdiff
intersect

y <- split(x$color, x$group)
z <- list(setdiff(y[[1]], y[[2]]), setdiff(y[[2]], y[[1]]))
names(z) <- names(y)
z[["both"]] <- intersect(y[[1]], y[[2]])
z
#$alpha
#[1] "red"    "blue"   "orange"
#
#$beta
#[1] "green"  "purple" "yellow"
#
#$both
#[1] "black" "white"

y谢谢您的快速帮助,这非常有效。为了防止其他人稍后阅读此内容,我现在还了解了如何将结果导出到.csv文件:zdata
x <- read.table(header=TRUE, text="group   color
alpha   red
alpha   blue
alpha   black
alpha   white
alpha   orange
beta    green
beta    white
beta    purple
beta    yellow
beta    black")