I have a data frame:
df <- data.frame(
id = c(1, 2, 3),
`1` = c("W4", "W5", 49),
`2` = c("L", "O1", "P6"),
`3` = c(1, 2, 10),
`4` = c("H7", NA, "K"),
`5` = c("J8", NA, NA)
)
How can I concatenate/paste the columns together with sep = ","
(The opposite of tidyr::separate(), I guess?)
Desired output:
id string
1 W4, L, 1, H7, J8
2 W5, O1, 2
3 49, P6, 10, K
Thanks in advance!
EDIT
I'm wary of using paste because in my real dataset I have 1000 columns.
The opposite of separate is unite .
How do I concatenate two columns in R? To concatenate two columns you can use the <code>paste()</code> function. For example, if you want to combine the two columns A and B in the dataframe df you can use the following code: <code>df['AB'] <- paste(df$A, df$B)</code>.
To split a column into multiple columns in the R Language, we use the separator() function of the dplyr package library. The separate() function separates a character column into multiple columns with a regular expression or numeric locations.
tidyr is new package that makes it easy to “tidy” your data. Tidy data is data that's easy to work with: it's easy to munge (with dplyr), visualise (with ggplot2 or ggvis) and model (with R's hundreds of modelling packages). The two most important properties of tidy data are: Each column is a variable.
You can use the unite function from tidyr:
library(tidyr)
unite(df, string, X1:X5, sep = ", ")
# id string
#1 1 W4, L, 1, H7, J8
#2 2 W5, O1, 2, NA, NA
#3 3 49, P6, 10, K, NA
Note that it also has a remove argument that is TRUE by default. If you set it to FALSE, the original columns are kept in the data.
For the column specification (which columns to unite) you can use the colon operator (:) as I did above or use the special functions described in ?dplyr::select.
We can do this in base R without any packages
data.frame(id = df[1], string= do.call(paste, c(df[-1], sep=",")))
# id string
#1 1 W4,L,1,H7,J8
#2 2 W5,O1,2,NA,NA
#3 3 49,P6,10,K,NA
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With