【发布时间】:2018-02-15 02:16:03
【问题描述】:
我有一个与样本相关的观察结果列表。我想删除特定样本对中出现的相同观察结果。
数据示例:
sample observation
sample1A 5
sample1B 7
sample2A 10
sample2B 10
sample3A 10
sample3B 5
因此,我们的想法是根据字母 A 和 B 将样本分组成对,然后为每一对删除任何具有匹配观察值的行。
在上述情况下,只有来自 sample2A 和 sample 2B 的观察结果将被排除,因为它们来自同一个样本 sample2,在两个不同的场合(sample2A 和 sample 2B)采样。输出如下所示:
sample observation
sample1A 5
sample1B 7
sample3A 10
sample3B 5
如果可以使用 DPLYR 来做到这一点,那将更加有用,因为我正在努力提高我对它的熟练程度。
我想使用 group_by() 根据样本名称将数据分组,然后使用 filter() 可以工作,但我不确定如何处理基于正则表达式或字符串的第一次配对的嵌套条件,然后通过查找行之间的匹配值进行过滤。
提前感谢您的帮助。
【问题讨论】:
-
这将是超级简单的 3 个变量:sampleNum、sampleLet、observation。然后做
dat[with(dat, !(duplicated(sampleNum & observation) | duplicated(sampleNum & observation, FromLast=TRUE)),]。 -
如果我可以将数据复制到 R...Lke 一个向量或矩阵中,那将是一个更好的问题。