计算满足条件的重复数据并删除数据

时间:2012-05-06 03:55:05

标签: excel excel-vba excel-formula pivot-table countif vba

示例文件已上传到MediaFile

背景资料

第1部分:在示例文件中,“Sheet1”

a.  Values in “Column A” are the original name. For example from Cell A1:
    “>hg19_refGene_NM_000392_0 range=chr10:101542463-101542634 5'pad=0 3'pad=0 strand=+ repeatMasking=none”

b.  Values in “Column B” is a value that correspond to values in Column A, for example  
    from Cell B1 which correspond to value in Cell A1: “ABCC2”  

第2部分:在示例文件中,“Sheet2”

a.  In the Sheet2, the values from Sheet1 have been separated to clarify the data because  
    in Sheet1, everything is packed in one cell. 

b.  Column A represents “GENE”, which refers to the value in Column B in Sheet1, for example,  
    “ABCC2” from Section 1 of this article.

c.  Column B represents “refGENE”, an example of refGENE is “NM000392” which come from the  
    original name from “Sheet1”

d.  Column C represents “CHROMOSOME”, this is another value that was derived from Values in  
    Column A of Sheet1, for example, “chr10”

e.  Similar Idea, “EXON START” came from the original name in Column A of Sheet1, for  
    example “101542463”

f.  And “EXON END” came from the original name in Column A of Sheet1, for example “101542634”

挑战是开发一个可以解决以下要求的程序:

要求1:计算每个基因,观察每个refGene的次数,例如:

Table Example refGENE COUNT NM000927 29 NM00078 32 NM00042 32 . . . . . .

enter image description here

注意:我这样做的方法是在Excel中使用SUMPRODUCT,但是,我不知道如何将所有内容放在一个简单的表中。

要求2: 这需要比较两个不同行中的值。请注意,这需要使用“Sheet1”中的原始名称。请不要使用“Sheet2”中的分隔值。 基本上,它是查询每一行,如果Gene,Chromosome,EXONSTART,EXON END相同,则删除频率最低的行。我将在下面进一步解释。

在“Shee1”中,有“原始名称”和“基因”,

步骤1:比较B列中的值是否相同。例如,在比较第1行和第2行时,有ABCC2ABCC2。这满足条件,因此继续执行步骤2,否则继续比较不同行的GENE。

第2步:比较不同行的“chr”值,与上一步相同。第1行有chr10,第2行有chr10,因为它们是相同的继续下一步,否则继续前进。

第3步:现在比较“外显子开始” - 第1行中的数字看起来像101542463,第2行中的数字看起来像101544365,现在它们不是同样,保存文件并继续前进。想象一下,如果数字是相同的,那么继续比较“外显子结束”,即第4步。

步骤4:假设两个不同行的“外显子开始”是相同的,然后比较“外显子结束”。第1行的数字看起来像101542634,第2行的“外显子结尾”数看起来像101544538。与上述条件相同,如果它们不同,请保留文件并继续比较下一个GENE。

这是需要注意的部分,如果它们是相同的,那意味着“GENE”是相同的,“chr”是相同的,“exon start”和“exon end”是相同的。最后,一切都是一样的,这意味着有一个重复的行。现在,将删除重复的行。但是删除行的条件是什么。这将把我们与我们从要求1解决的挑战联系起来。请记住,所有refGENE都计算了出现次数?回忆NM000927 29次,Nm00078 32次。要删除的“GENE”行是包含NM000927的行。

但是,请保留所有已删除数据和所有剩余数据的记录,最好是附表。

1 个答案:

答案 0 :(得分:2)

我同意@Siddharth的实例数,即带有行标签的GENE的数据透视表,Σ值= refGene的计数。

可能'重复'解决方案(至少在开头)插入行顶部,选择列A,排序&过滤/高级/复制到另一个位置=(比方说)C1 / tick仅限唯一记录/确定。这应该会给你一个比你开始少35行的列表。

要识别哪些行是重复的,请将A列复制到另一列(比如D),替换>(没有任何内容),然后在E2中输入=COUNTIF(D:D,D2)并双击单元格的底部右下角。 1 =唯一,其他任何事件都是实例数。