I have the following data frame I need to sort in a specific way. D1 and C1 are linked together D2 and C2 are linked together, D3 and C3 are linked together. I need columns D1, D2 and D3 to contain only one unique value, with there C# in column C.. respectfully.
X = structure(list(D1 = c("A", "A", "A", "A", "A", "B", "B", "B",
"B", "B", "C", "C", "C", "C", "C", "NA", "NA", "NA", "NA", "NA",
"NA", "NA", "NA", "NA", "NA", "B", "B", "B", "B", "B"), C1 = c("1",
"2", "3", "4", "5", "1", "2", "3", "4", "5", "1", "2", "3", "4",
"5", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA",
"1", "2", "3", "4", "5"), D2 = c("NA", "NA", "NA", "NA", "NA",
"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C",
"C", "C", "A", "A", "A", "A", "A", "NA", "NA", "NA", "NA", "NA"
), C2 = c("NA", "NA", "NA", "NA", "NA", "1", "2", "3", "4", "5",
"1", "2", "3", "4", "5", "1", "2", "3", "4", "5", "1", "2", "3",
"4", "5", "NA", "NA", "NA", "NA", "NA"), D3 = c("B", "B", "B",
"B", "B", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA",
"NA", "A", "A", "A", "A", "A", "NA", "NA", "NA", "NA", "NA",
"NA", "NA", "NA", "NA", "NA"), C3 = c("1", "2", "3", "4", "5",
"NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "1",
"2", "3", "4", "5", "NA", "NA", "NA", "NA", "NA", "NA", "NA",
"NA", "NA", "NA")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-30L))
My expected output format is this:
Y = structure(list(D1 = c("A", "A", "A", "A", "A", "A", "A", "A",
"A", "A", "NA", "NA", "NA", "NA", "NA", "A", "A", "A", "A", "A",
"A", "A", "A", "A", "A", "NA", "NA", "NA", "NA", "NA"), C1 = c("1",
"2", "3", "4", "5", "1", "2", "3", "4", "5", "NA", "NA", "NA",
"NA", "NA", "1", "2", "3", "4", "5", "1", "2", "3", "4", "5",
"NA", "NA", "NA", "NA", "NA"), D2 = c("B", "B", "B", "B", "B",
"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "NA", "NA",
"NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "B", "B", "B",
"B", "B"), C2 = c("1", "2", "3", "4", "5", "1", "2", "3", "4",
"5", "1", "2", "3", "4", "5", "NA", "NA", "NA", "NA", "NA", "NA",
"NA", "NA", "NA", "NA", "1", "2", "3", "4", "5"), D3 = c("NA",
"NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "C", "C",
"C", "C", "C", "C", "C", "C", "C", "C", "NA", "NA", "NA", "NA",
"NA", "NA", "NA", "NA", "NA", "NA"), C3 = c("NA", "NA", "NA",
"NA", "NA", "NA", "NA", "NA", "NA", "NA", "1", "2", "3", "4",
"5", "1", "2", "3", "4", "5", "NA", "NA", "NA", "NA", "NA", "NA",
"NA", "NA", "NA", "NA")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -30L))
X |> sort_by(~D1+C1+D2+C2), whereXis your input data. Re-arranging of column order is only cosmetic. Does your real data contain of several more columns and you want to sort after the pattern D1, C1, D2, C2, D3, ...?rowSums(). Not too sure what you want. And, haven't run, but I do not think your pivoting approach works.