以下のテキストファイルがあります。
[test.txt]
lang
12015/07/13 00:00:00, 1 22015/07/13 00:00:01, 2 32015/07/13 00:00:02, 3 42015/07/13 00:01:00, 1 52015/07/13 00:01:01, 2 62015/07/13 00:01:02, 3 7…(省略:実際には24時間分の1秒毎データがあります。)
これを次のように、DataTableへセットしました。
lang
1no,date,value 20,2015/07/13 00:00:00,1 31,2015/07/13 00:00:01,2 42,2015/07/13 00:00:02,3 53,2015/07/13 00:01:00,1 64,2015/07/13 00:01:01,2 75,2015/07/13 00:01:02,3 8…(省略)
行いたい事はdata"2015/07/13 00:00"の"value"平均値を算出したいです。
(要は1秒間隔で出力された値を1分間隔毎に平均値を取得したい)
DataTableに入れる事までは出来ました。
lang
1Dim MyDB As New DataTable 2Dim no As Integer = 0 3 4With MyDB 5 .PrimaryKey = New DataColumn() {.Columns.Add("no", Type.GetType("System.Int32"))} 6 .Columns.Add("date", Type.GetType("System.DateTime")) 7 .Columns.Add("value", Type.GetType("System.Int32")) 8End With 9 10With New StreamReader("test.txt", System.Text.Encoding.Default) 11 While .Peek() > -1 12 Dim value() As String = .ReadLine.Split(","c) 13 dtRow = mydb.NewRow() 14 dtRow("no") = no 15 dtRow("date") = value.ToArray(0) 16 dtRow("value") = value.ToArray(1) 17 mydb.Rows.Add(dtRow) 18 no = no + 1 19 End While 20End With
ちなみに、以下の処理だとめっちゃくちゃ時間がかかって話になりませんでした、、、
lang
1Dim TitleDate As String 2TitleDate = MyDB.Select("no=0").ToArray(0).Item("date") 3 4For i = 0 To 1440 5 dtRow = ds.Tables(0).NewRow 6 dtRow(0) = DateTime.Parse(TitleDate & " 00:00").AddMinutes(i).ToString("yyyy/MM/dd HH:mm") 7 dtRow(1) = MyDB.Compute("Avg(value)", "Convert(date, 'System.String') LIKE '" & dtRow(0).ToString & "%'") 8 ds.Tables(0).Rows.Add(dtRow) 9Next
すばやく1分毎の平均値を取得するにはどのように行えば良いでしょうか?
DataTableよりも高速な方法があれば、そちらも教えて頂きたいです。
よろしくご教示下さい。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/15 01:34