我试图转换看起来像这样的数据:
val inputData =
Seq(("STUDY1", "Follow-up", 1),
("STUDY1", "Off Study", 2),
("STUDY1", "Screening", 3),
("STUDY1", "Treatment", 4),
("STUDY2", "Follow-up", 5),
("STUDY2", "Off Study", 6),
("STUDY2", "Screening", 7),
("STUDY2", "Treatment", 8));
Run Code Online (Sandbox Code Playgroud)
到看起来像这样的数据:
val desiredData =
Seq(Seq(1,2,3,4),
Seq(5,6,7,8));
Run Code Online (Sandbox Code Playgroud)
我得到的最接近的是:
val result: Map[String, Seq[Int]] =
data.groupBy(i => i._1)
.mapValues(j => j.map(k => k._3))
.mapValues(_.toArray)
result.values.toSeq
Run Code Online (Sandbox Code Playgroud)
这会产生:
res0: Seq[Seq[Int]] = Stream(WrappedArray(1, 2, 3, 4), ?)
Run Code Online (Sandbox Code Playgroud)
最后一个问号是让我循环.
编辑
未来的互联网旅行者来到这里:我的代码确实有效......我的困惑源于了解?所有内容.来自下面的人的答案帮助我看到了mapValues懒惰的评价,而这?只是意味着.
mapValueson Map是懒惰的(与默认情况下的任何其他方法不同Map).那可能是那里的问题.你有没有尝试过:
data.groupBy(_._1).map(_._2.map(_._3).toArray)
Run Code Online (Sandbox Code Playgroud)
请注意,toArray这里完全是可选的.
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |