假设我有 3 个数据框(独立的 .txt 文件):
Acamar Begalb Caspri
Acamar 0.1 0.0 6.3
Begalb 0.33 8.3 0.0
Caspri 1.4 0.617 2.4
Acamar Begalb Caspri
Acamar 0.5 3.2 0.1
Begalb 0.0 2.1 0.5
Caspri 4.2 0.0 1.5
Acamar Begalb Caspri
Acamar 0.5 3.2 0.1
Begalb 0.0 2.1 0.5
Caspri 4.2 0.0 1.5
我想对 3 个数据框中的列值求和,以便得到:
Acamar Begalb Caspri
Acamar 1.1 6.4 6.5
Begalb 0.33 12.5 1
Caspri 9.8 0.617 5.4
像这样使用datamash:
cat *.txt | datamash --headers groupby 1 sum 2-4
用 0 填充我的所有列并返回错误消息:
invalid numeric value in field 2: 'Acamar'
有谁知道如何帮助,使用datamash或其他东西?
非常感谢 :)
这段代码有效:
结果:
这里的主要问题是通过
paste
,sed
line 和LC_ALL
value 来解决的。paste
逐行加入文件(cat *.txt
将一个接一个地加入文件,在数据中插入标题行)sed
行删除除第一次出现的标题行(来源)\s+
),后跟字母数字字符 ([[:alnum:]])+
)LC_ALL
是一个管理语言环境的变量,将防止对值中的点的任何误解-W
如果字段用空格而不是制表符分隔,还要添加。