Обработка TSV с Ruby
У меня есть файл TSV следующим образом. (Ну, это сохраняется как CSV). Он был создан путем запуска вставки в 2 файла и сохранения результата в другом файле. Поэтому столбцы фактически разделены вкладками.
Это такая файловая структура
Quantity1 Value1 Value2 Value3 ...Valuen
Quantity2 Value1 Value2 Value3 ...ValueN
....
....
Quantityn Value1 Value2 Value3 ...Valuen
Я хочу добавить еще 3 столбца в файл, который будет печатать минимальный, максимальный и 90-й процентиль каждой строки в 3 столбцах в конце.
Поскольку файлы были созданы скриптом Ruby, я решил, что они также должны обрабатываться скриптом ruby
1 ответ
Решение
Вам нужно будет прочитать файл, добавить необходимые столбцы для каждой строки и написать его снова, примерно так:
CSV.open('path_to_new_file.csv', 'wb', col_sep: "\t") do |new_csv|
CSV.foreach('path_to_src_file.csv', col_sep: "\t") do |row|
sorted_values = row[1..-1].sort
min = sorted_values.first
max = sorted_values.last
ninetieth_percentile = sorted_values[(sorted_values.length * 0.9).floor]
new_csv << row + [min, max, ninetieth_percentile]
end
end
Для получения дополнительной информации об обработке CSV в ruby, смотрите здесь