【发布时间】:2018-02-28 18:31:55
【问题描述】:
所以我正在尝试在 Scala 中处理数据。我现在遇到了障碍。我正在将一个文本文件读入包含列表的程序中,创建一个案例类来读取每个标题。我已经设法将(String,String)映射到double,但我希望将字符串映射到(string,double)。相关代码在这里:
def averageofactions (): Map[(String,String), Double] = {
datafile.groupBy(d => (d.user, d.typeofaction))
.mapValues(averageof => averageof.map(_.amount).sum /averageof.length)
}
这给了我我想要的东西(特定用户的特定操作的平均数量),但格式化后它给出了(用户 ID、操作)-> 平均,而我只想要一个类似的列表
用户 ID1:
Action1 -> 平均
Action2 -> 平均
等等。我知道最好的方法可能是通过更改它来返回 Map[String, (String,Double)],或者可能是多图/哈希图,但我不确定如何去做。我试过了:
def modifiedaverage (): Map[String, (List[String], Double)] = {
datafile.groupBy(d => (d.user))
.mapValues(averageof => (averageof.map(_.typeofaction), averageof.map(_.amount).sum/averageof.length))
}
但是这里的输出完全奇怪。我怎样才能重写这个函数来给我想要的东西?
【问题讨论】:
-
看起来您希望它返回
Map[String, Map[String, Double]],而不是Map[String, (List[String], Double)],因为每个“动作”都有自己的“价值”——对吧?
标签: scala