2017-09-21 19 views
0

静的な列数(ヘッダー付き)と動的な行数を持つCSVファイルがあり、静的な行数と動的な数値を持つ別のCSVに変換する必要があります列の(ヘッダーの有無にかかわらず)。PowerShellを使用したCSVファイルのトランスポーズ

スプレッドシートの前後の例を示します。一番上のセクションは自分の入力データを表し、一番下のセクションは目的の状態です。もちろん

CSV Spreadsheet Data

これは私はそれに関連付けられた1基を有していてもよい50グループおよびユーザを有するユーザを有することができるように小さなサブセットです。これは、私が列の数を事前に知らないままにするので、動的でなければなりません。

私はthis postに見つかったものを使用しようとしましたが、私のニーズに合うようにコードを修正しようとする問題が発生しています。私ができる最も近いのは、それぞれの一意のユーザーIDの行を作成することですが、各ユーザーの隣の列に対応するグループ名を持つ代わりに、ヘッダーとして設定され、ユーザーには値は設定されません。

Undesired Current Result

+0

アンスガーWiechers私がまさに必要となります。私が言ったように、私はそれを考えすぎた。今後の投稿を心がけていますので、投稿のクリーンアップにもお礼を申し上げます。また、私はまだ10の投稿を持っていなかったので、直接私はそれらを直接埋め込むことはできませんでしたので、私は直接画像を投稿することができませんでした。 – Blkhwksfan2010

答えて

1

あなたは単にあなたがキーとして最初の列の値を使用配列のハッシュテーブルに二列の値を収集することができ、ヘッダーまたは定義された列を必要としない場合:

$data = @{} 
Import-Csv 'C:\path\to\input.csv' | ForEach-Object { 
    $data[$_.UserID] += @($_.GroupName) 
} 

次に、あなたは、このようなデータをテキストファイルにエクスポートすることができます。

$data.Keys | ForEach-Object { 
    $_ + ',' + ($data[$_] -join ',') 
} | Set-Content 'C:\path\to\output.txt' 
関連する問題