我有这样的数据集,我从csv文件中获取但是如何 存储在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 :(得分:0)
在这里回答你的问题是解决方案,这段代码读取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]]
,然后按第三列排序,然后打印
答案 1 :(得分: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)