mercredi 15 juin 2022

R - replacing dataframe values using a pattern from a separate dataframe

i need to use an R script to replace barcodes in a column of an existing dataframe retroactively using a pattern of barcodes generated in a separate dataframe. Easier to give an example:

tubeList <- data.frame(Barcode = c(1:20),
                        sampleType = c("a", "a", "a", "a", 
                               "b", "b", "b", "b", 
                               "c", "c", "c", "c", 
                               "d", "d", "d", "d", 
                               "e", "e", "e", "e")
                        )

combo <- data.frame(Barcode_1 = c("1", "1", "1", "1", "1",
                              "2", "2", "2", "2", "2", 
                              "3", "3", "3", "3", "3", 
                              "4", "4", "4", "4", "4",
                              "5", "5", "5", "5", "5"),
                    SampleName_1 = c("a", "a", "a", "a", "a", "a", "a", "a", "a", "a",
                               "b", "b", "b", "b", "b", "b", "b", "b", "b", "b",
                               "c", "c", "c", "c", "c", "c", "c", "c", "c", "c",
                               "d", "d", "d", "d", "d", "d", "d", "d", "d", "d",
                               "e", "e", "e", "e", "e", "e", "e", "e", "e", "e")
                        )

I need to replace the barcodes in the Barcode_1 column of combo so that they repeat the same pattern the barcodes follow in the Barcode column of tubeList if the SampleName_1 column of combo matches the sampleType column of tubeList, and keep repeating the pattern from tubeList until all the SampleName_1 in combo have a new associated barcode in the Barcode_1 column.

This is what the ideal output would look like:

comboReplaced <- data.frame(Barcode_1 = c("1", "2", "3", "4", "1", "2", "3", "4", "1", "2",
                              "5", "6", "7", "8", "5", "6", "7", "8", "5", "6",
                              "9", "10", "11", "12", "9", "10", "11", "12", "9", "10",
                              "13", "14", "15", "16", "13", "14", "15", "16", "13", "14",
                              "17", "18", "19", "20", "17", "18", "19", "20", "17", "18"),
                    SampleName_1 = c("a", "a", "a", "a", "a", "a", "a", "a", "a", "a",
                               "b", "b", "b", "b", "b", "b", "b", "b", "b", "b",
                               "c", "c", "c", "c", "c", "c", "c", "c", "c", "c",
                               "d", "d", "d", "d", "d", "d", "d", "d", "d", "d",
                               "e", "e", "e", "e", "e", "e", "e", "e", "e", "e")
                        )

Thank you!

Aucun commentaire:

Enregistrer un commentaire