合并重复行excel

合并重复行excel,excel,bash,excel-2010,Excel,Bash,Excel 2010,现在,我有一堆来自不同来源的数据行。列A包含源文件的名称,其余列是从这些源中提取的值和分类 我想做的是将这些行与同一个源文件合并 目前: 来源1,值1,值2,值3 来源1,值4,值5 来源2,值1,值2 来源2,值3,值4 我需要它看起来像什么 来源1、值1、值2、值3、值4、值5 来源2,值1,值2,值3,值4 我可以灵活地处理这件事。如果导出到csv并在bash中使用它比在excel中使用它更容易,那么我可以这样做我认为这在awk中差不多可以做到,但我必须喂养孩子们:-): 输出行将存储在数

现在,我有一堆来自不同来源的数据行。列A包含源文件的名称,其余列是从这些源中提取的值和分类

我想做的是将这些行与同一个源文件合并

目前:

来源1,值1,值2,值3

来源1,值4,值5

来源2,值1,值2

来源2,值3,值4

我需要它看起来像什么

来源1、值1、值2、值3、值4、值5

来源2,值1,值2,值3,值4


我可以灵活地处理这件事。如果导出到csv并在bash中使用它比在excel中使用它更容易,那么我可以这样做

我认为这在awk中差不多可以做到,但我必须喂养孩子们:-):


输出行将存储在数组d[]中。在读取每一行时,我检查由该行上的第一个字段索引的数组元素d[]是否未定义(即长度=0),如果未定义,则在其中存储字段1(即源)。然后我将行中所有剩余的字段连接到我存储的字符串上。最后,我打印出d[]中的所有字符串。

如果您觉得非常有冒险精神,在数据分析中,这称为将长数据更改为宽数据,或“重塑”数据。当然,这不是最快的方法(先学习一些统计数据/数据包,比如R),但是,好了,开始吧。
awk -F, '{if(!length(d[$1]))d[$1]=$1;for(i=2;i<=NF;i++)d[$1]=d[$1]","$i}END{for(i in d)print d[i]}' yourfile.csv
Source1 , value1, value2, value3, value4, value 5
Source2 , value 1, value 2, value 3, value 4