2017-02-22 17 views
1

Я студент по экономике, и у меня нет большого опыта в области науки о данных. Я попытался описать проблему как можно точнее, если есть что-то неясно, пожалуйста, дайте мне знать :)MS Acces - Calculate

У меня есть некоторые проблемы с расчетами данных для моей дипломной работы:

Проблемы: Я хочу, чтобы проанализировать набор данных с 3 столбцами и 20 миллионами строк. 3 столбца - это метка времени, пользователь (около 130 пользователей) и потребление энергии (Вт в секунду).

Data

В примере, данные посаженные показано. Временные метки основаны на интервалах 10-15 секунд и являются ли эти временные метки последовательными. Таким образом, измерение с отметкой времени 1458185209 составляет 10-15 секунд после измерения с отметкой времени 1458185109. Эти метки времени анонимно генерируются. Однако я знаю точное время начала и окончания и дату измерений. Всего ровно 153 дня.

Из этой информации, я хочу рассчитать среднее потребление на пользователя в день. Предположим, что прибл. 300 000 точек измерения для пользователя1 в наборе данных. Общее время измерения составляет 2 месяца. Таким образом, среднее потребление пользователя можно рассчитать, взяв среднее значение от отметки времени 1 до отметки времени 4918 (300 000/61 дней).

Я хочу сделать это для всех пользователей за все дни за данный период.

Другая проблема заключается в том, что не все пользователи имеют одинаковое количество измерений. Однако измерения можно разделить на 153 дня. Например, для пользователя1 первый день имеет 278 измерений и для измерений пользователя2 313.

На изображении вы можете увидеть общие измерения и общее потребление для пользователей.

Я попытался решить эту проблему в Access, но до сих пор мне это не удалось. У меня есть какие-либо советы или предложения (желательно в Access), пожалуйста, дайте мне знать :)

Спасибо большое!

+1

это можно легко сделать с помощью инструкции SQL, если ваша временная метка представляет собой реальную временную метку (например, временную метку Unix) и, таким образом, ее можно преобразовать в дату-время, чтобы определить временной диапазон и группировать по дням. Ответьте первым –

+0

Спасибо большое! Я конвертировал свои временные метки Unix в datetime, и теперь я смогу закончить его :) – Laurens

ответ

1

Возможно ли, что, когда не все пользователи имеют одинаковое количество измерений, они не использовали питание? Это было бы легко определить, нет ли записей с нулевым потреблением.

Чтобы понять интервалы и способы преобразования в нечто, что имеет смысл, ознакомьтесь со следующим кодом. Все, что вам нужно будет сделать в Access, чтобы вычислить дату/время: DateAdd («S», Отметка, # 1/1/1970 #)

Function Date_Timestamp() 

' Timestamp should be # of seconds since 1/1/1970 

Dim lTimestamp As Long 
Dim dStartDate As Date 
Dim dThisDate As Date 
Dim lSecPerMin As Long 
Dim lSecPerHr As Long 
Dim lSecPerDay As Long 
Dim lSecPerYr As Long 
Dim lNbrDays As Long 

dStartDate = #1/1/1970# 

lTimestamp = 1460210005 
lSecPerMin = 60 
lSecPerHr = 60 * lSecPerMin  ' =  3,600 
lSecPerDay = 24 * lSecPerHr  ' =  86,400 
lSecPerYr = 365 * lSecPerDay ' = 31,536,000  ** Don't use this (Leap Years!!) 
lNbrDays = lTimestamp/lSecPerDay 

' Just show the approximate date... 
dThisDate = DateAdd("d", lNbrDays, #1/1/1970#) 
Debug.Print "Timestamp: " & lTimestamp & vbTab & "# Days: " & lNbrDays & vbTab & "Date: " & dThisDate 

' To be more precise, show the time also... 
dThisDate = DateAdd("s", lTimestamp, #1/1/1970#) 
Debug.Print "Timestamp: " & lTimestamp & vbTab & "Date/Time: " & dThisDate 

End Function 
+0

Спасибо за помощь, я исправил проблему! – Laurens