简体   繁体   中英

Concatenate columns in R

My dataset has two columns (REF and COLOR).

Dataset

> dput(dataset)
structure(list(REF = structure(c(3L, 5L, 3L, 1L, 3L, 3L, 3L, 
4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L), .Label = c("BRE", "GAB", 
"HID", "RIU", "UNK"), class = "factor"), COLOR = structure(c(3L, 
2L, 3L, 4L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L
), .Label = c("#01665e", "#4d4d4d", "#80cdc1", "#bf812d", "#f6e8c3"
), class = "factor")), class = "data.frame", row.names = c(NA, 
-17L))
> 

How can I create a color column as shown below from the other columns?

   REF_COLOR

"BIF" = "#543005",
"BRE" = "#bf812d",
"DIA" = "#dfc27d",
"GAB" = "#f6e8c3",
"GRA" = "#f5f5f5",
"GRN" = "#c7eae5",
"HID" = "#80cdc1",
"RIO" = "#35978f",
"RIU" = "#01665e",
"RVB" = "#003c30",
"RVU" = "#8e0152",
"SAP" = "#276419",
"SOL" = "#2d004b",
"UNK" = "#4d4d4d"

The most I have achieved so far is this:

> paste(ref, color, sep=" = ")
[1] "HID = #80cdc1", "UNK = #4d4d4d", "BRE = #bf812d", "RIU = #01665e", "GAB = #f6e8c3"

This is less trivial than it may seem, requiring more than one operation:

Here, I first do a double paste and then a double substitution:

REF_COLOR <- paste(sub('^|$', '"', 
                       gsub(', ', '", "', 
                            paste0(paste0(df$REF,'" = "', df$COLOR, sep = ""), collapse = ", "))), '"', sep = "")

Result:

REF_COLOR
[1] "\"HID\" = \"#80cdc1\", \"UNK\" = \"#4d4d4d\", \"HID\" = \"#80cdc1\", \"BRE\" = \"#bf812d\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"RIU\" = \"#01665e\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"GAB\" = \"#f6e8c3"

As noted by @Mr.Flick, to see the unescaped values, use cat :

cat(REF_COLOR)
"HID" = "#80cdc1", "UNK" = "#4d4d4d", "HID" = "#80cdc1", "BRE" = "#bf812d", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "RIU" = "#01665e", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "GAB" = "#f6e8c3"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM