【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

プログラミング初心者です。

1182274912041121210
11820348482079122310
111036756482068221210
11142067412124121210
11120412020195123410
112221010730201136122320
11261031191110360122310

という横に87個、縦に30000個のデータファイルがあります。
データの並び替えをしたいのですが

まず1行目、4列目(1, 4)のデータを先頭に持ってきて
次に4列目とi列目を比較して同じ(iは1行目i列目という意味)(i=14, 22, 34, 38, 42)であれば2番目に持ってきます。
次にi列目が決まった時jは以下のように決まるとします。またjはj列目にあるデータとします。

i=14のとき
j=16, 18, 20

i=22のとき
j=24, 26, 28, 30, 32

i=34のとき
j=36

i=38のとき
j=40

i=42のとき
j=44

を順番にならべてください。

例)4列目が5のとき、
  5 5(i=22) 3(j=24) 2(j=26) 0(j=28) 0(j=30) 3(j=32)
としたいのです。

次にj列目とk列目(k=14, 22, 34, 38, 42)を比べ同じであれば、iを選んだときにjを並べたようにしたいのです。(少しわかりにくい?)

例)
5 5 3 2 0 0 3(j=32) 3(k=14) (16列目)(18列目)(20列目)

というように。   
最後にn列目と6列目を比較して同じであれば終了。次は2行目、4列目…
それを30000行目まで。

というプログラミングをつくりたいです。
最終的に、txt形式にしたいのですが、なにぶん知識は本でしかなく、どうすればいいかわかりません。

fgets、strtok、atoiを使って配列してから・・・・みたいにするのですか?説明に不足があるかもしれません。すいません。

A 回答 (5件)

処理対象は、「第4回トリップデータ」として、補足要求します。



 http://www.mlit.go.jp/seisakutokatsu/jyunryuudou …

そうでない場合は、以降無視して下さい。
++++++++++++++++++++++++++++++++++++++++++++++
トップの、1 1 8227 49 1204 1 1 2 1 2 1 0 は、

1   利用交通機関(1:航空2:鉄道3:幹線旅客船4:幹線バス5:乗用車等)
1   代表交通機関
8227  出発地純流動市町村コード(筑西市:茨城に飛行場はないはずだが??)
49   出発地207生活圏コード( 83 のはずだが??)
1204  目的地純流動市町村コード(旭川市)
1   目的地207生活圏コード( 11 のはずだが??)
1   旅行目的
2   宿泊有無
1   泊
2   日
1   日目
0   海外旅行フラグ

となります。
質問文冒頭で示されたデータについて、

・「並び替え」の質問で最も重要と思われる『利用経路』以降を、なぜ省略したか。
・上の??部分は、質問投稿用?に加工したものか。
・手元のデータは、「横に87個」とあるが、間違いはないか。

以上、3点について、補足願います。
++++++++++++++++++++++++++++++++++++++++++++++
>最終的に、txt形式にしたいのですが、なにぶん知識は本でしかなく、どうすればいいかわかりません。

 内容的には、必要な項目を抜き出し、ファイルに出力するだけだから、「本」だけの知識で十分可能だと思います。
    • good
    • 0

まず「入力データファイルの仕様書」を作りましょう。



数値が何を意味しているのか、取り得る値の範囲はどこからどこまでか、複数の項目の関連性はどうなっているか、など。

それが出来たら「出力したいtxtファイルの仕様書」を作りましょう。

入力データがこうなってたらこう出力するとか、この値はこういう文字に変換するとか、など。

「仕様」を明確にしてしまえば「仕様通りにプログラムすれば良いだけ」です。

「何をどうプログラムして良いのか判らない」「質問しようと思っても上手く説明できない」のは「自身が仕様を理解してないから」です。

>というプログラミングをつくりたいです。

「プログラミング」とは「プログラムする」と言う意味の動詞です。

「というプログラミングをつくりたいです」と言う表現は間違いなので「というプログラムをつくりたいです」または「というプログラミングをしたいです」と言う表現にしましょう。

>fgets、strtok、atoiを使って配列してから

仕様を理解してないうちにプログラムしようとしても無意味です。

今は、そういう事を考える段階ではありません。もっと手前の段階で躓いているのですから。
    • good
    • 0

14-21列、22-33列、34-37列、38-41列、42-45列


の各ブロックであるデータを表しているということかな
奇数列が飛ばしてある意味も知りたい
とりあえず87個のデータフォーマットの意味がわかれば理解しやすいと思います。
4番目:出発地
6番目:到着地
14番目:空港?

この回答への補足

13列目から航空の出発空港(都道府県)
14列目  航空の出発空港(207生活圏)
      ・
      ・
      ・
      ・
という風に都道府県、生活圏、都道府県、生活圏・・・・・
で並んでます。
全国幹線旅客純流動調査の個票データを使います。
旅行目的、代表交通機関、年齢、宿泊日数など87項目の個人属性が書いてあります

補足日時:2009/07/18 13:48
    • good
    • 0

No.1氏への返答で追加されて言いますが、やっぱりわかりません。


理由は単純で、
「質問に提示されているデータ」から、質問者さんが提示している「結果」が導き出せないからです。
まず、「結果が導き出せるデータ」を例としてあげてください。
そのデータの項目は「それぞれ何を意味しているのか」記載してください。
そのうえでも行いたいことを説明してください。

この回答への補足

遅くなって申し訳ありません。

4列目 出発地

6列目 目的地

14列目 航空の出発空港

16列目 航空の乗換空港

18列目 航空の乗換空港

20列目 航空の到着空港

22列目 鉄道の出発駅

24、26、28、30列目 鉄道の乗換駅

32列目 鉄道の到着駅

34列目 幹線バスの出発

36列目 幹線バスの到着

38列目 フェリーの出発

40列目 フェリーの到着

42列目 乗用車の出発

44列目 乗用車の到着

4列目と6列目にはどこからどこへ行った。というデータしかありません。
14列目から44列目までは何にのったのかというデータしかありません。
なので何に乗ってどういう順番でどこからどこへいったのかを知りたいのです。14列目から44列目までを並び替えると出発地点と目的地に一致するはずなんですが。説明が下手で申し訳ないです

補足日時:2009/07/18 13:30
    • good
    • 0

えぇと....


「少しわかりにくい?」と書かれていますが, 正直に言います. 「少し」どころか「最初から全くわかりません」
そもそも最初の「1行目、4列目(1, 4)のデータを先頭に持ってきて」はどのような理由から出てきたんでしょうか? そして, そのあとの「4列目とi列目を比較して同じ(iは1行目i列目という意味)(i=14, 22, 34, 38, 42)であれば2番目に持ってきます。」の 14 とか 22 とかいう数値はどこを見ればわかるんでしょうか? さらに「次にj列目とk列目(k=14, 22, 34, 38, 42)を比べ同じであれば、iを選んだときにjを並べたようにしたい」の i と j と k はどのような関係にあるのでしょうか? 最後に「n列目と6列目を比較して同じであれば終了。次は2行目、4列目…」の「…」の完全な順序を示してください (「2行目」が来るのも謎だけど).

この回答への補足

すいません。説明不足で。混乱したと思います。

4列目は出発地点です。6列目は到着地点です。

(出発地点)------(?)-------→(到着地点)

この間に使った交通機関の情報がわかりません。
i列目にある情報は各交通機関の搭乗空港、出発地点です。
iが5個あるのは空港、鉄道、バス、船、乗用車です。

例えば出発地点Aから到着地点Bに行った時
鉄道、航空と経由した場合、どのようなルートを通ったのか?

A(49地点) 出発駅(49地点) 乗継駅(56地点) 乗継駅(0地点(0地点の場合欠損データとして処理)) 乗継(0) 乗継(0) 到着駅(78) 搭乗空港(78) 乗継(0) 到着空港(178) B(178)

49 56 78 178

ってのがわかるようにしたいのですが。
1行に1人が移動したときのデータがはいってます。
地点の情報は1~207まであります。

補足日時:2009/07/14 00:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報