Разделите почасовое расписание на минуты, используя Excel - PullRequest
0 голосов
/ 24 февраля 2019

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

|hour|number of items|destination|

Существует 24 часа (целый день) и 9 различных пунктов назначения.Задача состоит в том, чтобы разделить его так, чтобы у меня была разбивка по пунктам.Например, это:

|1|5|Kitchen|
|1|2|Bedroom|

Должно стать так:

|1:10|1|Kitchen
|1:20|1|Kitchen
|1:20|1|Bedroom
|1:30|1|Kitchen
|1:40|1|Kitchen
|1:40|1|Bedroom
|1:50|1|Kitchen

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

1 Ответ

0 голосов
/ 24 февраля 2019

Вы можете использовать цикл for для просмотра всех данных и иметь переменную counter для всех 9 пунктов назначения.Используйте Split, чтобы получить правильные данные из данных.Вот некоторый псевдокод, который может вам помочь:

HourVariable = 0
For i = 1 to endOfdata
  dHour = split(split(dataline(i),"|")(1),":")(0) 'Get the hour from the dataline
  If Hourvariable <> dHour then 'Check if the hour changed. In that case the data for that hour needs to be written and all counters go to 0
     If cKitchen > 0 then NewData = NewData & "|" & dHour & "|" & cKitchen & "|Kitchen|" & vbNewLine
     If cBedroom > 0 etc...    
     cKitchen = 0
     cBedroom = 0
     HourVariable = dHour
     Select case split(dataline(i),"|")(3) 'Check which destination is in the current dataline
       Case "Kitchen": cKitchen = cKitchen + 1
       Case "Bedroom": etc...
     End Select
  Else 'In other cases, just add to the counters
     Select case split(dataline(i),"|")(3) 'Check which destination is in the current dataline
       Case "Kitchen": cKitchen = cKitchen + 1
       Case "Bedroom": etc...
     End Select
  End if
next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...