Help us understand the problem. What is going on with this article?

複数のcsvファイルを一つのcsvファイルにマージ

More than 5 years have passed since last update.

明日の11時までにこのcsvファイルをひとまとめにしておいてね

わお徹夜だ☆

ではなく。。。

簡単なスクリプトを組んで一瞬で終わらせてしまいましょう

1.csv
user_id, user_name, mail_address, comment
0001, ホゲほげ男, hogeo@example.com, hogehoge
0002, ホゲほげ子, hogeko@example.com, hogehogehoge
2.csv
user_id, user_name_alphabet, comment2
0001, hoge hogeo, aaaaaa
0002, hoge hogeko, bbbbb

というようなcsvファイルがあったとします。ここでエクセルを使う必要はありません。
以下のようなスクリプトを書けば良いのです

merge.rb
require 'pp'
require 'csv'

class CSVMerger

  def save_csv
    CSV.open("./merged.csv", "wb") do |csv|
      merge_array_from_csv.each do |element|
        csv << element
      end
    end
  end

  def merge_array_from_csv
    list1 = load_csv("1.csv")
    list2 = load_csv("2.csv")

    generated_array = []
    generated_array_element = []

    for i in 0..(list1.count.to_i - 1)
      for j in 0..(list2.count.to_i - 1)
        if (list1[i][0] == list2[j][0])
          generated_array_element.concat(list1[i]).concat(list2[j])
          generated_array << generated_array_element.pop(8).uniq!
        end
      end
    end
    return generated_array
  end

  def load_csv(target_file_name)
    return CSV.parse(open("./" << target_file_name).read)
  end
end

csv_merger = CSVMerger.new()
csv_merger.save_csv

なにをやっているかというと、それぞれのcsvを読み込んで配列とし、
共通要素であるuser_idをもとに、for文で1.csvを上から舐めていき、さらにその中で2.csvを上から舐めて、一致する行の要素をconcatでマージし、uniq!で要素の重複を取り除いています。
冗長な感じになりますが、csvファイルが2個以上の場合でもfor文とif文を修正&追加することで対応できます

エクセル使うのだりいなって思って書いた即興スクリプトなので、イケてない書き方してるかもです

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away