Ruby - группировка данных из файла CSV по столбцу - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть CSV-файл, который выглядит следующим образом:

+---------+----------+
|  Name   |  Stream  |
+---------+----------+
| Jacob   | Computer |
| Ryan    | Arts     |
| Bob     | Computer |
| Charlie | Science  |
| Grace   | Arts     |
+---------+----------+

Мне нужно прочитать этот CSV-файл и сгруппировать студентов по их потоку. Вывод должен быть таким:

Computer
----------
Jacob
Bob

Arts
------
Ryan
Grace

Science
--------
Charlie

Я пытался использовать group_by, но не знал, как и где его использовать. Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 08 ноября 2018

Я предполагаю, что у вас есть CSV-файл со следующим содержанием:

Name,Stream
Jacob,Computer
Ryan,Arts
Bob,Computer
Charlie,Science
Grace,Arts

Вы можете использовать что-то вроде этого

require 'csv'    

result = {}
file = File.read('path_to_your_file')
csv = CSV.parse(file, headers: true)
csv.each do |row|
  if result[row[1]]
    result[row[1]].push row[0]
  else
    result[row[1]] = [row[0]]
  end
end

Вы получите result переменную, содержащую хеш, где каждый поток будет связан с массивом имен

...