2016-04-25 13 views
0

私はcsvファイルからフェッチしていますが、処理を行うためにScalaに ストアする方法をこのように設定しました。Scalaで複数の列を持つデータセットをランク付けする方法は?

+-----------+-----------+----------+ 
| recent | Freq  | Monitor | 
+-----------+-----------+----------+ 
|  1 |  1234| 199090| 
|  4 |  2553| 198613| 
|  6 |  3232 | 199090| 
|  1 |  8823 | 498831| 
|  7 |  2902 | 890000| 
|  8 |  7991 | 081097| 
|  9 |  7391 | 432370| 
|  12 |  6138 | 864981| 
|  7 |  6812 | 749821| 
+-----------+-----------+----------+ 

実際には、データを並べ替えてランク付けする必要があります。 私はScalaプログラミングの新機能です。 おかげでここにあなたの質問に答える

+0

ランクは何ですか?式はありますか? – agusgambina

+0

私はそのデータを一番下にランク付けしたいと思います。 – jwvh

+0

@Niranjanp私は、底の近くのデータのランク付けが何であるか分かりません。ランキングを取得する式はありますか?答えは私がやっていることがはっきりしていますか? – agusgambina

答えて

0

が解決され、このコードは、3列目でCSVと秩序を読み込み

object CSVDemo extends App { 
    println("recent, freq, monitor") 
    val bufferedSource = io.Source.fromFile("./data.csv") 
    val list: Array[Array[String]] = (bufferedSource.getLines map { line => line.split(",").map(_.trim) }).toArray 
    val newList = list.sortBy(_(2)) 
    newList map { line => println(line.mkString(" ")) } 
    bufferedSource.close 
} 

あなたは、ファイルを読んで、あなたはArray[Array[String]]にそれを解析し、その後、第三で注文します列、および印刷する

+0

ありがとうこのデータセット私はcsvファイルから読んでいますが、どのようにセットや配列のようなスカラーのコレクション型に格納しますか? – Niranjanp

+0

@ Niranjanp昨日私は質問を得ていない、ここでは解決策です。それが助けてくれることを願う – agusgambina

+0

ありがとう。私は本当にそれを感謝します。 – Niranjanp

0

ここでは、リストを使用して、一度に各列を正規化し、それらを連結しようとします。列方向を反復して正規化する他の方法はありますか?申し訳ありませんが、私のコーディングは非常に基本的です。

val col1 = newList.map(line => line.head) 

val mi = newList.map(line => line.head).min 

val ma = newList.map(line => line.head).max 

println("mininumn value of first column is " +mi) 
println("maximum value of first column is : " +ma) 

// calculate scale for the first column 

val scale = col1.map(x => math.round((x.toInt - mi.toInt)/(ma.toInt - mi.toInt))) 

println("Here is the normalized range of first column of the data") 

scale.foreach(println) 
+0

私はこの回答がどのようにあなたの質問を解決するか尋ねるかもしれません。私は接続が表示されません – eliasah

+0

私の主な仕事は、データを正規化し、ランクを割り当てることです。最初のコードから、私はCSVファイルをロードし、List(@gusgambinaコード)に変換しました。第二に、私はそのリストを使用しており、最小値と最大値を見つけた各行の最初の要素を繰り返します。その後、それを正規化するために線形Min-Max正規化法を使用した。ここでは、リストから1つの列のみのコードを入力します。同様に私は残りの列のためにやっているし、それらをマージしようとします。これを行う正しい方法ですか? – Niranjanp

+0

これは新しい質問ですか?もしそうなら、それを新しい質問として投稿してください!この回答が最初の質問に答えた場合は、問題を閉じるために受け入れてください。 – eliasah

関連する問題