【发布时间】:2015-06-17 22:13:58
【问题描述】:
我想知道是否有人可以帮助对下面的数据进行分组,因为我正在尝试使用子集函数来过滤掉低于某个阈值的卷,但鉴于数据代表对象组,这会产生删除某些对象的问题应该保留的物品。
在 F 列(和 I)中,您可以看到蓝色、红色和黄色对象。每个代表一条 DNA 链上的三个单独的有色探针。奇数编号或非编号的蓝色、红色和黄色与由偶数编号的蓝色、红色和黄色表示的同源链配对。即第 2、3 和 4 行中的数据是一个“组”,并与第 5、6 和 7 行中显示的“组”配对。然后重复,因此 8、9、10 是一个新组,并且该组对与 11、12、13 中的一个。
我想做的是对组进行子集化,以便仅保留到中点(M 列)一定距离以下的组。这里的中点是连接一组蓝色与其伙伴蓝色的线的中点,因此子集应该只适用于蓝色到中点的距离,这就是我遇到问题的地方。例如,如果我要求保持到中点的蓝色距离小于 3,则应保留第 3 行和第 4 行中的对象,因为它们是蓝色距离低于 3 的组的一部分。虽然现在当我使用子集函数我失去了红色选择和黄色选择。我相信在 R 中有一个直截了当的解决方案,但如果有人通过该路线提出建议,我也愿意在 excel 中进行某种类型的过滤。
编辑 昨晚发布问题后,我设法在 Excel 中解决了一些问题。解决方案并不漂亮,但效果很好。我刚刚在“到中点的距离”旁边添加了一个新列,它为一组中的所有对象提供相同的距离,这样当我过滤数据时,我就不会丢失任何我不应该丢失的对象。如果它对将来的任何人有帮助,我在 excel 中使用的公式是:
=SQRT ( ((INDEX($B$2:$B$945,1+QUOTIENT(ROWS(B$2:B2)-1,3)*3))- (INDEX($O$2:$O$945,1+QUOTIENT(ROWS(O$2:O2)-1,3)*3)) ) ^2 +( (INDEX($C$2:$C$945,1+QUOTIENT(ROWS(C$2:C2)-1,3)*3))-(INDEX($P$2:$P$945,1+QUOTIENT(ROWS(P$2:P2)-1,3)*3)) ) ^2 +( (INDEX($D$2:$D$945,1+QUOTIENT(ROWS(D$2:D2)-1,3)*3))-(INDEX($Q$2:$Q$945,1+QUOTIENT(ROWS(Q$2:Q2)-1,3)*3)) ) ^2)
【问题讨论】:
-
能否请您提供reproducible example 并向我们展示您迄今为止所做的尝试?