在ruby中打开两个csv文件,并将两个文件中的一些列复制到第三个文件中

在ruby中打开两个csv文件,并将两个文件中的一些列复制到第三个文件中,ruby,Ruby,打开两个csv文件。两个文件中的字段名称和值标签、样本相同,将“旧”和“新”的平均值组合到第三个csv。 我可以找到一些显示csv更快的结果,但这对我来说是全新的。如果该行只存在于一个文件中,我希望它保留在新文件中 例如: File1.csv label,sample,average_old t1,10,12 t2,11,13 文件2.csv label,sample,average_new t1,10,16 t2,11,15 File3.csv应该是 label,sample,averag

打开两个csv文件。两个文件中的字段名称和值标签、样本相同,将“旧”和“新”的平均值组合到第三个csv。 我可以找到一些显示csv更快的结果,但这对我来说是全新的。如果该行只存在于一个文件中,我希望它保留在新文件中

例如:

File1.csv

label,sample,average_old
t1,10,12
t2,11,13
文件2.csv

label,sample,average_new
t1,10,16
t2,11,15
File3.csv应该是

label,sample,average_old,average_new
t1,10,12,16
t2,11,13,15
需要“csv”
foreach('/tmp/File2.CSV').inject(
foreach('/tmp/File1.CSV').inject({})do| memo,第|行
(备忘录[第一行]| |=[])
require 'csv'
CSV.foreach('/tmp/File2.csv').inject(
  CSV.foreach('/tmp/File1.csv').inject({}) do |memo, row| 
    (memo[row.first] ||= []) << row
    memo
  end
) do |memo, row| 
  (memo[row.first] ||= []) << row
  memo
end.map(&:flatten).map(&:uniq)

#⇒ [
#    ["label", "sample", "average_old", "average_new"], 
#    ["t1", "10", "12", "16"], 
#    ["t2", "11", "13", "15"]
#  ]