Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用EXCEL(而不是R或SQL)进行数据操作/分析/聚合--由两列组成的复合键,计算出的计数总和_Sql Server_Excel_Aggregate_Composite Key - Fatal编程技术网

Sql server 使用EXCEL(而不是R或SQL)进行数据操作/分析/聚合--由两列组成的复合键,计算出的计数总和

Sql server 使用EXCEL(而不是R或SQL)进行数据操作/分析/聚合--由两列组成的复合键,计算出的计数总和,sql-server,excel,aggregate,composite-key,Sql Server,Excel,Aggregate,Composite Key,我四处打听,仍然没有解决办法。人们只是告诉我“使用数据透视表容易”,但说起来容易做起来难,到目前为止还没有解决办法 我想使用Excel 2013/2016完成以下工作: 1。原始数据 我有一个这样的逗号分隔的文本文件,有280万行: 表1: Cell_Id, Gene_Id, Count gcatatgc,AAK1,36 gcatatgc,ABHD14B,5 gcatatgc,ABHD17B,20 tttggcca,ABI3,4 tttggcca,AAK1,50 tttggcca,ABHD14B

我四处打听,仍然没有解决办法。人们只是告诉我“使用数据透视表容易”,但说起来容易做起来难,到目前为止还没有解决办法

我想使用Excel 2013/2016完成以下工作:

1。原始数据

我有一个这样的逗号分隔的文本文件,有280万行:

表1:

Cell_Id, Gene_Id, Count
gcatatgc,AAK1,36
gcatatgc,ABHD14B,5
gcatatgc,ABHD17B,20
tttggcca,ABI3,4
tttggcca,AAK1,50
tttggcca,ABHD14B,6
aaaggctt,ABT1,5
aaaggctt,ACAA1,14
aaaggctt,AAK1,50
aaaggctt,ABHD14B,6
ggaggcaa,AAK1,50
ggaggcaa,ABHD14B,6
ggaggcaa,AAK1,36
ggaggcaa,ABHD14B,5
......
....
Distinct_Cell_ID, Key_Distinct_Cell_ID
gcatatgc, 1
tttggcca, 2
aaaggctt, 3 
ggaggcaa, 4
......
....
Distinct_Gene_ID, Key_Distinct_Gene_ID
AAK1,1
ABHD14B,2
ABHD17B,3
ABI3,4
ABT1,5
ACAA1,6
......
....
Key_Distinct_Cell_ID, Key_Distinct_Gene_ID, Sum_Group_Count
1, 1, 36
1, 2, 5
1, 3, 20
2, 4, 4
2, 1, 50
2, 3, 6
3, 5, 50
3, 6, 6
3, 1, 36
3, 2, 5
......
....
Cell\u ID
Gene\u ID
具有重复项

2。步骤A。从上面的CSV文本文件中,我想创建一个具有不同
Cell\u ID
的表,并使用每个不同
Cell\u ID
的唯一键号生成新列

生成的表2:

Cell_Id, Gene_Id, Count
gcatatgc,AAK1,36
gcatatgc,ABHD14B,5
gcatatgc,ABHD17B,20
tttggcca,ABI3,4
tttggcca,AAK1,50
tttggcca,ABHD14B,6
aaaggctt,ABT1,5
aaaggctt,ACAA1,14
aaaggctt,AAK1,50
aaaggctt,ABHD14B,6
ggaggcaa,AAK1,50
ggaggcaa,ABHD14B,6
ggaggcaa,AAK1,36
ggaggcaa,ABHD14B,5
......
....
Distinct_Cell_ID, Key_Distinct_Cell_ID
gcatatgc, 1
tttggcca, 2
aaaggctt, 3 
ggaggcaa, 4
......
....
Distinct_Gene_ID, Key_Distinct_Gene_ID
AAK1,1
ABHD14B,2
ABHD17B,3
ABI3,4
ABT1,5
ACAA1,6
......
....
Key_Distinct_Cell_ID, Key_Distinct_Gene_ID, Sum_Group_Count
1, 1, 36
1, 2, 5
1, 3, 20
2, 4, 4
2, 1, 50
2, 3, 6
3, 5, 50
3, 6, 6
3, 1, 36
3, 2, 5
......
....
3。步骤B,还创建另一个具有不同基因ID的表,并使用每个不同基因ID的唯一键号生成新列

生成的表3:

Cell_Id, Gene_Id, Count
gcatatgc,AAK1,36
gcatatgc,ABHD14B,5
gcatatgc,ABHD17B,20
tttggcca,ABI3,4
tttggcca,AAK1,50
tttggcca,ABHD14B,6
aaaggctt,ABT1,5
aaaggctt,ACAA1,14
aaaggctt,AAK1,50
aaaggctt,ABHD14B,6
ggaggcaa,AAK1,50
ggaggcaa,ABHD14B,6
ggaggcaa,AAK1,36
ggaggcaa,ABHD14B,5
......
....
Distinct_Cell_ID, Key_Distinct_Cell_ID
gcatatgc, 1
tttggcca, 2
aaaggctt, 3 
ggaggcaa, 4
......
....
Distinct_Gene_ID, Key_Distinct_Gene_ID
AAK1,1
ABHD14B,2
ABHD17B,3
ABI3,4
ABT1,5
ACAA1,6
......
....
Key_Distinct_Cell_ID, Key_Distinct_Gene_ID, Sum_Group_Count
1, 1, 36
1, 2, 5
1, 3, 20
2, 4, 4
2, 1, 50
2, 3, 6
3, 5, 50
3, 6, 6
3, 1, 36
3, 2, 5
......
....
4。步骤C,从表1、2和3生成一个新表,按
Distinct\u Cell\u ID
Distinct\u Gene\u ID
分组,并生成一个组计数和,按
(Distinct\u Cell\u ID
Distinct\u Gene\u ID
)唯一对分组

生成的表4:

Cell_Id, Gene_Id, Count
gcatatgc,AAK1,36
gcatatgc,ABHD14B,5
gcatatgc,ABHD17B,20
tttggcca,ABI3,4
tttggcca,AAK1,50
tttggcca,ABHD14B,6
aaaggctt,ABT1,5
aaaggctt,ACAA1,14
aaaggctt,AAK1,50
aaaggctt,ABHD14B,6
ggaggcaa,AAK1,50
ggaggcaa,ABHD14B,6
ggaggcaa,AAK1,36
ggaggcaa,ABHD14B,5
......
....
Distinct_Cell_ID, Key_Distinct_Cell_ID
gcatatgc, 1
tttggcca, 2
aaaggctt, 3 
ggaggcaa, 4
......
....
Distinct_Gene_ID, Key_Distinct_Gene_ID
AAK1,1
ABHD14B,2
ABHD17B,3
ABI3,4
ABT1,5
ACAA1,6
......
....
Key_Distinct_Cell_ID, Key_Distinct_Gene_ID, Sum_Group_Count
1, 1, 36
1, 2, 5
1, 3, 20
2, 4, 4
2, 1, 50
2, 3, 6
3, 5, 50
3, 6, 6
3, 1, 36
3, 2, 5
......
....
并将表4输出到逗号分隔的CSV文件中

5。步骤D,生成3个“总值”

如果有人能帮助我,告诉我如何在EXCEL 2013或EXCEL 2016中执行步骤A、B、C和D,我将不胜感激

  • 需要从一列到另一列提取“不同的”值(删除重复项),然后在新列旁边为列单元格ID(新列不同的单元格ID和键不同的单元格ID)和列基因ID(新列不同的基因ID和键基因的单元格ID)生成一个序列键号

  • 创建另一个表,其中包含列Key_Distinct_Gene_ID、Key_Distinct_Cell_ID,并生成第三列“计数”总和,查找原始数据表1,组合键为(Distinct_Gene_ID,Distinct_Cell_ID)=(Gene_ID,Cell_ID)

  • 当源CSV文件更改时,也可以通过单击EXCEL功能按钮来刷新表1至表4以及步骤D中的值

(虽然用R/Python程序或SQL Server看起来更容易做到,但我想知道如何在Excel中做到这一点)

我已经为此编写了一个R减价脚本,但仍然不知道如何在EXCEL中执行它

说起来容易做起来难

我希望这个问题足够具体,有人能回答

问候
Alex

您已经具体尝试了什么,遇到了什么问题?您可以尝试一些方法,例如运行SQL查询以获取不同的组合和计数,或者如果您熟悉VBA,您可以尝试(例如)使用字典提取唯一值并创建键值。听起来你并不真的需要Excel的解决方案……我儿子在生命科学学院的实验室工作,他的教授给了他一个关于一些研究的数据分析任务。我参加了edX Microsoft的“EXCEL数据分析和可视化”课程。因此,我的第一反应是“使用PowerPivot实现卓越”。然后我尝试了,但没有找到EXCEL中实现这一点的步骤/工具。我儿子嘲笑我,说EXCEL不能胜任如此简单的数据分析处理任务。我在微软EXCEL论坛上问了同样的问题,但还没有得到任何答复。所以我想知道EXCEL是否真的能做到这一点。在EXCEL中实现这一点的主要问题是源文件中的2.8M行:您可以使用VBA和ADO文本驱动程序在EXCEL中实现,但实际上并没有使用任何EXCEL功能。我不熟悉PowerPivotHi Tim,假设它只有2800行。我想知道它可以用EXCEL来完成,可能不是完全自动化的;只需点击几下就可以了。但我认为不需要编写VBA/ADO程序。有2800行数据透视表是一个很好的起点。