none
CSVファイルと計算方法 RRS feed

  • 質問

  • お世話なります。

    id,1:00,2:00,3:00,4:00,5:00,・・・・,24:00
    100,10,20,10,30,・・・
    200,50,80,40,・・・

    上記のようなCSVファイルがあるのですが、id単位に24時間の合計値を求めたいと思っています。

    よい発想がでません。

    どのような方法があるでしょうか。
    教えてください。

    2010年9月13日 8:15

回答

  • お返事ありがとうございます。

    このファイル内の足し算です。 


    いかにもやっつけ感が高くなってしまいますが、こんな感じでもできます^^;
    Import-csvで読んで、24時間足しこみを、読んだ個数回しているだけです。 

    $work = import-csv test.csv
    for ($i = 0; $i -lt $work.Count ; $i++){
     $sum = 0
     for ($j = 1;$j -le 24 ;$j++){$sum=$sum + [int]$work[$i].([string]$j+":00")}
     $ret = "id:" + $work[$i].id + "->" + $sum
     Write-Output $ret
    }
    
    
    下記のように強引な記述ができるPowerShellが楽しくて仕方ありません^^;
    [int]$work[$i].([string]$j+":00")


     

    • 編集済み ChukiMVP 2010年9月13日 12:18 12時間⇒24時間に修正
    • 回答としてマーク TAKAKUN 2010年9月14日 0:49
    2010年9月13日 10:14

すべての返信

  • このファイル内の足し算でしょうか?

    それともファイルを跨いである時間からの24時間でしょうか?

    2010年9月13日 9:18
  • お返事ありがとうございます。

    このファイル内の足し算です。

     

     

    2010年9月13日 9:29
  • お返事ありがとうございます。

    このファイル内の足し算です。 


    いかにもやっつけ感が高くなってしまいますが、こんな感じでもできます^^;
    Import-csvで読んで、24時間足しこみを、読んだ個数回しているだけです。 

    $work = import-csv test.csv
    for ($i = 0; $i -lt $work.Count ; $i++){
     $sum = 0
     for ($j = 1;$j -le 24 ;$j++){$sum=$sum + [int]$work[$i].([string]$j+":00")}
     $ret = "id:" + $work[$i].id + "->" + $sum
     Write-Output $ret
    }
    
    
    下記のように強引な記述ができるPowerShellが楽しくて仕方ありません^^;
    [int]$work[$i].([string]$j+":00")


     

    • 編集済み ChukiMVP 2010年9月13日 12:18 12時間⇒24時間に修正
    • 回答としてマーク TAKAKUN 2010年9月14日 0:49
    2010年9月13日 10:14
  • この手の作り方ですが、まずはImport-csvしてみて、読み込んだ変数を表示します。

    次に、$work | Get-member をやってみてみます
    1:00 NotePropertyとなるので、各プロパティには
    $work[0]."1:00"
    のように、文字列を指定したらアクセスできることが分かります。
    あとは、単にループまわして足しこむだけです。

    基本は Get-Member ですね^^

    とりあえずなんかあったらここを見てます。

    「PowerShell基礎文法最速マスター」
    http://blogs.wankuma.com/mutaguchi/archive/2010/02/13/186034.aspx

    2010年9月13日 10:23
  • Chuki さん好みの質問が来て、やや興奮気味なのかもしれませんけど…

    足し込みが「12時間」なのは…何故でしょうか?24時間なのでは…と思う今日この頃…(笑)

     

    2010年9月13日 12:15
  • Chuki さん好みの質問が来て、やや興奮気味なのかもしれませんけど…

    足し込みが「12時間」なのは…何故でしょうか?24時間なのでは…と思う今日この頃…(笑) 


    ご指摘ありがとうございます。
    修正しておきました。
    2010年9月13日 12:17
  • ご返事ありがとうございます。

    勉強になりました。

    ありがとうございました。

    2010年9月14日 0:49