7 ratings.groupBy(_._1).view.mapValues(_.map(_._2)).toMap |
7 ratings.groupBy(_._1).view.mapValues(_.map(_._2)).toMap |
8 |
8 |
9 def urban_get_csv_file(name: String) : List[String] = { |
9 def urban_get_csv_file(name: String) : List[String] = { |
10 import io.Source |
10 import io.Source |
11 import scala.util._ |
11 import scala.util._ |
12 val csv = Source.fromFile(name) |
12 val csv = Source.fromFile(name)("ISO-8859-1") |
13 csv.mkString.split("\n").toList.drop(1) |
13 csv.mkString.split("\n").toList.drop(1) |
14 } |
14 } |
15 |
15 |
16 def urban_process_ratings(lines: List[String]) : List[(String, String)] = { |
16 def urban_process_ratings(lines: List[String]) : List[(String, String)] = { |
17 for (cols <- lines.map(_.split(",").toList); |
17 for (cols <- lines.map(_.split(",").toList); |
18 if (cols(2).toFloat >= 4)) yield (cols(0), cols(1)) |
18 if (cols(2).toInt >= 4)) yield (cols(0), cols(1)) |
19 } |
19 } |
20 |
20 |
21 |
21 |
22 val urban_good_ratings = process_ratings(urban_get_csv_file("ratings.csv")) |
22 val urban_good_ratings = urban_process_ratings(urban_get_csv_file("ratings.csv")) |
23 |
23 |
24 val urban_ratings_map = urban_groupById(urban_good_ratings) |
24 val urban_ratings_map = urban_groupById(urban_good_ratings) |
25 |
25 |
26 assert(favourites(urban_ratings_map, "912").length == 80) |
26 assert(favourites(urban_ratings_map, "912").length == 80) |
27 assert(favourites(urban_ratings_map, "858").length == 158) |
27 assert(favourites(urban_ratings_map, "858").length == 158) |