Задача сбора данных - PullRequest
       9

Задача сбора данных

0 голосов
/ 21 октября 2010

У меня есть данные, следующие за этим видом патента:

ID      Name1     Name2    Name3    Name4    .....
41242   MCJ5X     TUAW     OXVM4    Kcmev 1
93532   AVEV2     WCRB3    LPAQ 2   DVL2
.
.
.

На данный момент это всего лишь формат в электронной таблице, который содержит около 6000 строк. Что мне нужно сделать, это создать новую строку для каждого имени после Name1 и связать ее с идентификатором в текущей строке. Например, см. Ниже:

ID      Name1 
41242   MCJ5X     
41242   TUAW    
41242   OXVM4    
41242   Kcmev 1
93532   AVEV2     
93532   WCRB3    
93532   LPAQ 2   
93532   DVL2

Есть идеи, как я мог это сделать? Я чувствую, что это не должно быть слишком сложным, но я не уверен в лучшем подходе. Будь то сценарий или какая-то функция, я бы очень признателен за помощь.

1 Ответ

0 голосов
/ 21 октября 2010

Если возможно, вы можете использовать файл csv .Эти файлы являются текстовыми, и большинство программ для работы с электронными таблицами могут открывать / изменять их (я знаю, Excel и версия OpenOffice могут).Если вы воспользуетесь этим подходом, ваш алгоритм будет выглядеть примерно так:

read everything into a string array
create a 1 to many data structure (maybe a Dictionary<string, List<string>> or list of (string, string) tuple types)

loop over each line of the file
splice the current line on the ','s and loop over those
if this is the first splice, add a new item to the 1 to many data structure with the current splice as the Id
otherwise, add this splice to the "many" (name) part of the last item in the data structure

create a new csv file or open the old one for writing
output the "ID, Name1" row
loop over each 1-many item in the data collection
loop over the many items in the current 1-many item
output the 1 (id) + "," + current many item (current name)

Вы можете сделать это на любом языке.Если это сценарий одноразового использования, то, вероятно, хорошим выбором будет Python, Ruby или Powershell (в зависимости от платформы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...