csvファイルの編集について質問です。


例えば下記のようなメールアドレスが重複していて、その後ろのデータなcsvのファイルがあります。

aaa@aaa.aaa,りんご,123
aaa@aaa.aaa,みかん1,456
aaa@aaa.aaa,いちご2,789
bb@xxx.xx,データ1,098
bb@xxx.xx,データ3,028
bb@xxx.xx,データ2,198
cccc@cc.cc,ライオン,555
cccc@cc.cc,象,634

これを以下のように
重複しているメールアドレスのデータを一つにまとめたいのですがなにかいい案はないでしょうか?

aaa@aaa.aaa,りんご,123,みかん,456,いちご,789
bb@xxx.xx,データ1,098,データ3,028,データ2,198
cccc@cc.cc,ライオン,555,象,634

使用ツールはエクセル。
言語だったらperlかPHPでお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2006/04/14 11:47:12
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:mkonomi No.1

回答回数651ベストアンサー獲得回数45

ポイント15pt

テキストエディタは何をお使いでしょうか?

秀丸エディタをお使いでしたら、そのマクロで簡単に実現できますが。

http://hide.maruo.co.jp/index.html

http://www.vector.co.jp/vpack/browse/pickup/pw0/pw000054.htm...

http://www.vector.co.jp/soft/win95/writing/se086280.html

id:pipi_n

ありがとうございます。

秀丸エディタ使用してますがマクロを使ったことがないので、どのマクロをどうやって使えばいいのか・・・

2006/04/14 02:43:47
id:mkonomi No.2

回答回数651ベストアンサー獲得回数45

ポイント10pt

秀丸エディタ実行中に

メニューバーから

マクロ(M)⇒マクロヘルプ(H)

をご覧ください。

これらのマクロを用いて、処理手順は自分で作成します。

論理は簡単ですよね。

id:n_koji72 No.3

回答回数53ベストアンサー獲得回数1

ポイント50pt

#!perl

$\ = "\n";

$FS = ',';

while (<>) {

chomp;

@Fld = split(/[,\n]/, $_, -1);

for ($i = 1; $i <= $#Fld; $i++) {

$list{$Fld[0]} = $list{$Fld[0]} . ',' . $Fld[$i];

}

}

foreach $item (keys %list) {

print $item . $list{$item};

}

AcitvePerl 5.8.8で確認しました。

gawkの1行野郎

$ awk 'BEGIN{FS=","} {for(i=2;i<=NF;i++){list[$1] = list[$1]","$i}} END{for(item in list){print item list[item]}}'

をa2pで変換したものを一部修正しました。

連想配列は出力の順番が不定なのでソートは別に行ってください

id:pipi_n

ありがとうございます。

この処理でちょっと手を加えてできました!!

2006/04/14 11:41:04
id:okuryu No.4

回答回数72ベストアンサー獲得回数3

ポイント15pt

$csv = file('hoge.csv');


foreach($csv as $line){


$values = explode(',',trim($line));

$list[$values[0]] = $values[0];


for($i=1;$i<count($values);$i++){


$list[$values[0]] .= $values[$i];


}


}


foreach($list as $line){


echo $line."\n";


}

確認してませんが PHP だとこんな感じでしょうか。

連想配列の key を使えばもう少し簡単に書けそうですが。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません