У меня есть набор данных, в котором было создано несколько столбцов, но данные совпадают (boxID).Я хотел бы объединить столбцы, чтобы у меня был только boxID (буквенно-цифровой код: двухбуквенное сокращение состояния и 2 числа), а не значения NA, что происходит сейчас, когда я использую функцию unite () изdplyr.Есть ли подобная функция, которая может сделать это, или мне нужно было бы извлечь boxIDs на основе сопоставления с шаблоном с помощью stringr?
dat <- structure(list(boxId = c("CA04", "CA04", "CA01", "CA02", "CA04",
"CA02", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), boxId__1 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "NM01", "NM14", "NM15",
"NM16", "NM17", "NM18", "NM19", "NM20", "NM02", "NM03", "NM04",
"NM05", "NM06", "NM07", "NM08", "NM09", "NM10", "NM11", "NM12",
"NM13"), boxId__2 = c(NA, NA, NA, NA, NA, NA, "FL01", "FL02",
"FL03", "FL09", "FL08", "FL07", "FL04", "FL05", "FL06", "FL10",
"FL11", "FL13", "FL12", "FL20", "FL19", "FL18", "FL17", "FL16",
"FL14", "FL15", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), boxID = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), boxID__1 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
boxID__2 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA), boxID__3 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "IN05", NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
), boxID__4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA), boxID__5 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
boxID__6 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA), boxID__7 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
boxID__8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA), boxID__9 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "WA11", NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
)), row.names = c(NA, -48L), class = c("tbl_df", "tbl", "data.frame"
))
Вот как выглядят данные:
# A tibble: 48 x 13
boxId boxId__1 boxId__2 boxID boxID__1 boxID__2 boxID__3 boxID__4 boxID__5 boxID__6
<chr> <chr> <chr> <lgl> <lgl> <lgl> <chr> <lgl> <lgl> <lgl>
1 CA04 NA NA NA NA NA NA NA NA NA
2 CA04 NA NA NA NA NA NA NA NA NA
3 CA01 NA NA NA NA NA NA NA NA NA
4 CA02 NA NA NA NA NA NA NA NA NA
5 CA04 NA NA NA NA NA NA NA NA NA
6 CA02 NA NA NA NA NA NA NA NA NA
7 NA NA FL01 NA NA NA NA NA NA NA
8 NA NA FL02 NA NA NA NA NA NA NA
9 NA NA FL03 NA NA NA NA NA NA NA
10 NA NA FL09 NA NA NA NA NA NA NA
# … with 38 more rows, and 3 more variables: boxID__7 <lgl>, boxID__8 <lgl>, boxID__9 <chr>
Когда я использую unite (), это выглядит так:
dat %>%
unite('newID')
И я застрял с этими значениями NA:
# A tibble: 48 x 1
newID
<chr>
1 CA04_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA
2 CA04_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA
3 CA01_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA
4 CA02_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA
5 CA04_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA
6 CA02_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA
7 NA_NA_FL01_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA
8 NA_NA_FL02_NA_NA_NA_NA_NA_NA_NA_NA_NA_NA