[//]: # (title: merge) Merges several columns into a single column. Reverse operation to [`split`](split.md) ```kotlin merge { columns } [.notNull()] .by(delimeter) | .by { merger } [.into(column) | .intoList() ] merger: (DataRow).List -> Any ``` **Related operations**: [](splitMerge.md) See [column selectors](ColumnSelectors.md) for how to select the columns for this operation. ```kotlin // Merge two columns into one column "fullName" df.merge { name.firstName and name.lastName }.by(" ").into("fullName") ``` `merger` accepts a `List` of collected values for every row typed by their common type: ```kotlin df.merge { name.firstName and name.lastName } .by { it[0] + " (" + it[1].uppercase() + ")" } .into("fullName") ``` When heterogeneous columns are merged, they may need to be cast to valid types in `merger`: ```kotlin df.merge { name.firstName and age and isHappy } .by { "${it[0]} aged ${it[1]} is " + (if (it[2] as Boolean) "" else "not ") + "happy" } .into("status") ``` By default, when no `delimeter` or `merger` is specified, values will be merged into the [`List`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/): ```kotlin df.merge { colsOf() }.into("data") ``` Merged column values can also be exported to [`List`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/): ```kotlin // Merge data from two columns into List df.merge { name.firstName and name.lastName }.by(",").intoList() ```