C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 東京電力の5分間隔値を読み取る


(過去ログ 103 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■61569 / inTopicNo.1)  東京電力の5分間隔値を読み取る
  
□投稿者/ JRY (13回)-(2011/08/19(Fri) 20:21:20)

分類:[VB.NET/VB2005 以降] 

2011/08/19(Fri) 20:21:57 編集(投稿者)

(http://bbs.wankuma.com/index.cgi?mode=al2&namber=61470の続きです)
東京電力のCSVデータの5分間隔値を読み取ろうと考えています。
最初の考えでは、次のような方法が浮かび上がりました。
Dim time As String
time = Format(Now, "HH:mm")
If time <= "**:**" Then
'値を獲得する処理
End If
ただ、If文を使った方法だと、何個も書かないといけないので大変です。
現在の時刻と、5分間隔値の時間の最も近い値を読み取ることができますか?
(csvの読み取りは以下のようにしています)
Dim csvRecords As New System.Collections.ArrayList()
Dim tfp As New FileIO.TextFieldParser("graphtmp-tepco.csv", _
System.Text.Encoding.Default)
'区切り文字を,とする
tfp.Delimiters = New String() {","}
tfp.TextFieldType = FileIO.FieldType.Delimited
tfp.HasFieldsEnclosedInQuotes = False
tfp.TrimWhiteSpace = False





While Not tfp.EndOfData
'フィールドを読み込む
Dim fields As String() = tfp.ReadFields()
'保存
csvRecords.Add(fields)

End While

(中略)


'ピーク時供給電力と5分間隔値で、電力使用率の割合を出す
Dim five As String '5分間隔値
'5分間隔値を読み取る
'いまの所、考えが浮かばない
'(label4はピーク時供給電力の値が入っている)
Dim par As String
Dim par1 As String
Dim par2 As String '割合
Dim time As String
time = Format(Now, "HH:mm")
par = five / Label4.Text
par1 = par * 100
par2 = (Fix(par1 * 10) / 10)
'後始末
tfp.Close()
引用返信 編集キー/
■61571 / inTopicNo.2)  Re[1]: 東京電力の5分間隔値を読み取る
□投稿者/ ちくわ (2回)-(2011/08/19(Fri) 21:06:56)
東京電力のCSVデータの5分間隔値って、何ですか?
CSVの中に時間情報があるのか、それともどこかから5分間隔でダウンロードするデータなのか、
さっぱり見当がつきません。

前回の質問スレッドを拝見しましたが、何をしたいのか、何が分からないのか、判然としません。
質問の回答を得たいのであれば、もう少し説明が必要なのではないでしょうか?
引用返信 編集キー/
■61575 / inTopicNo.3)  Re[2]: 東京電力の5分間隔値を読み取る
□投稿者/ もんごろいどAU (5回)-(2011/08/20(Sat) 09:41:46)
>東京電力のCSVデータの5分間隔値
5分毎に数値データが入るだけのCSVならMicrosoftTextDriverで接続して日付と時間をキーにして
SQLで引っ張ってくることも考えたのですが…
http://internet.watch.impress.co.jp/docs/news/20110324_434746.html
この記事で紹介されている「電力の使用状況データ(CSV形式) 」というリンクから
辿れるデータでしょうかね。これだとするとちょっと工夫が必要かな。


>現在の時刻と、5分間隔値の時間の最も近い値
現在の分の値を5で割って、小数点以下切り捨てで5を掛けると、5分間隔の近い値になるかな。

引用返信 編集キー/
■61576 / inTopicNo.4)  Re[1]: 東京電力の5分間隔値を読み取る
□投稿者/ shu (947回)-(2011/08/20(Sat) 10:05:29)
2011/08/20(Sat) 10:05:42 編集(投稿者)
No61569 (JRY さん) に返信

CSVの内容を見ると、

DATE,TIME,当日実績(5分間隔値)(万kW)

の行をヘッダとして以下対象データとなっているので、この行をまず
探して後はデータとして取り込むと良いと思います。
1列目と2列目を連結すると日時になるのでDate型に変換してキーとすると良いと思います。

現在時刻の対象時間については
Date.Now から
  Year
  Month
  Day
  Hour
  Minute
をまず取得して
Minute = (Minute \ 5) * 5 + if(Minute mod 5 < 3, 0, 5)
例) 23 => (23 \ 5) * 5 + if(23 mod 5 < 3, 0, 5) => 4 * 5 + if(3 < 3, 0, 5) => 25
    31 => (31 \ 5) * 5 + if(31 mod 5 < 3, 0, 5) => 6 * 5 + if(1 < 3, 0, 5) => 30
    58 => (58 \ 5) * 5 + if(58 mod 5 < 3, 0, 5) => 11 * 5 + if(3 < 3, 0, 5) => 60
とし
new Date(Year, Month, Day, Hour, 0, 0).AddMinutes(Minute)
※Minuteは60になる可能性があるのでAddMinutesで計算
で求めると良いかと思います。


引用返信 編集キー/
■61586 / inTopicNo.5)  Re[2]: 東京電力の5分間隔値を読み取る
□投稿者/ JRY (1回)-(2011/08/20(Sat) 19:20:44)
No61576 (shu さん) に返信
> 2011/08/20(Sat) 10:05:42 編集(投稿者)
>
> ■No61569 (JRY さん) に返信
>
> CSVの内容を見ると、
>
> DATE,TIME,当日実績(5分間隔値)(万kW)
>
> の行をヘッダとして以下対象データとなっているので、この行をまず
> 探して後はデータとして取り込むと良いと思います。
> 1列目と2列目を連結すると日時になるのでDate型に変換してキーとすると良いと思います。
>
> 現在時刻の対象時間については
> Date.Now から
> Year
> Month
> Day
> Hour
> Minute
> をまず取得して
> Minute = (Minute \ 5) * 5 + if(Minute mod 5 < 3, 0, 5)
> 例) 23 => (23 \ 5) * 5 + if(23 mod 5 < 3, 0, 5) => 4 * 5 + if(3 < 3, 0, 5) => 25
> 31 => (31 \ 5) * 5 + if(31 mod 5 < 3, 0, 5) => 6 * 5 + if(1 < 3, 0, 5) => 30
> 58 => (58 \ 5) * 5 + if(58 mod 5 < 3, 0, 5) => 11 * 5 + if(3 < 3, 0, 5) => 60
> とし
> new Date(Year, Month, Day, Hour, 0, 0).AddMinutes(Minute)
> ※Minuteは60になる可能性があるのでAddMinutesで計算
> で求めると良いかと思います。
>
>
解決済み
引用返信 編集キー/
■61587 / inTopicNo.6)  Re[2]: 東京電力の5分間隔値を読み取る
□投稿者/ JRY (2回)-(2011/08/20(Sat) 19:21:58)
No61576 (shu さん) に返信
> 2011/08/20(Sat) 10:05:42 編集(投稿者)
>
> ■No61569 (JRY さん) に返信
>
> CSVの内容を見ると、
>
> DATE,TIME,当日実績(5分間隔値)(万kW)
>
> の行をヘッダとして以下対象データとなっているので、この行をまず
> 探して後はデータとして取り込むと良いと思います。
> 1列目と2列目を連結すると日時になるのでDate型に変換してキーとすると良いと思います。
>
> 現在時刻の対象時間については
> Date.Now から
> Year
> Month
> Day
> Hour
> Minute
> をまず取得して
> Minute = (Minute \ 5) * 5 + if(Minute mod 5 < 3, 0, 5)
> 例) 23 => (23 \ 5) * 5 + if(23 mod 5 < 3, 0, 5) => 4 * 5 + if(3 < 3, 0, 5) => 25
> 31 => (31 \ 5) * 5 + if(31 mod 5 < 3, 0, 5) => 6 * 5 + if(1 < 3, 0, 5) => 30
> 58 => (58 \ 5) * 5 + if(58 mod 5 < 3, 0, 5) => 11 * 5 + if(3 < 3, 0, 5) => 60
> とし
> new Date(Year, Month, Day, Hour, 0, 0).AddMinutes(Minute)
> ※Minuteは60になる可能性があるのでAddMinutesで計算
> で求めると良いかと思います。
>
>
ご指南ありがとうございました。
おかげで解決できました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -