48 lines
1.3 KiB
Kotlin
Vendored
48 lines
1.3 KiB
Kotlin
Vendored
import org.jetbrains.kotlinx.dataframe.*
|
|
import org.jetbrains.kotlinx.dataframe.annotations.*
|
|
import org.jetbrains.kotlinx.dataframe.api.*
|
|
import org.jetbrains.kotlinx.dataframe.io.*
|
|
|
|
fun box(): String {
|
|
val typed = dataFrameOf("name", "age", "city", "weight")(
|
|
"Alice", 15, "London", 54,
|
|
"Bob", 45, "Dubai", 87,
|
|
"Charlie", 20, "Moscow", null,
|
|
"Charlie", 40, "Milan", null,
|
|
"Bob", 30, "Tokyo", 68,
|
|
"Alice", 20, null, 55,
|
|
"Charlie", 30, "Moscow", 90,
|
|
)
|
|
|
|
val typed2 = dataFrameOf("name", "origin", "grade", "age")(
|
|
"Alice", "London", 3, "young",
|
|
"Alice", "London", 5, "old",
|
|
"Bob", "Tokyo", 4, "young",
|
|
"Bob", "Paris", 5, "old",
|
|
"Charlie", "Moscow", 1, "young",
|
|
"Charlie", "Moscow", 2, "old",
|
|
"Bob", "Paris", 4, null,
|
|
)
|
|
|
|
val add2 = typed.group { name and age }.into("gr").add {
|
|
"gr1" {
|
|
"gr2" {
|
|
"i" from { index() }
|
|
}
|
|
}
|
|
}
|
|
val add3 = typed2.group { origin and age }.into("gr").add {
|
|
"gr1" {
|
|
"gr2" {
|
|
"i" from { index() }
|
|
}
|
|
}
|
|
}
|
|
|
|
val joinWithGroups2 = add2.innerJoin(add3) { gr1.match(gr1) }
|
|
|
|
joinWithGroups2.assert()
|
|
|
|
return "OK"
|
|
}
|