У меня есть этот набор данных:
df <- structure(list(V1 = c("B1D01", "B1D01", "B1D01", "B1D01", "B1D01",
"B1D01", "U0155"), V2 = c("U0155", "U0155", "U0155", "U0155",
"U0155", "U0155", "U3003"), V3 = c("U3003", "U3003", "C1B00",
"U3003", "U3003", "U3003", "C1B00"), V4 = c("C1B00", "C1B00",
"U0073", "C1B00", "C1B00", "C1B00", "P037D"), V5 = c("P037D",
"P037D", NA, "P037D", "P037D", "P037D", "P0616"), V6 = c("P0616",
"P0616", NA, "P0616", "P0616", "P0616", "P0562"), V7 = c("P0562",
"P0562", NA, "P0562", "P0562", "P0562", "U0073"), V8 = c("U0073",
"U0073", NA, "U0073", "U0073", "U0073", NA)), .Names = c("V1",
"V2", "V3", "V4", "V5", "V6", "V7", "V8"), row.names = 1719:1725, class = "data.frame")
Когда я print(df)
:
V1 V2 V3 V4 V5 V6 V7 V8
1719 B1D01 U0155 U3003 C1B00 P037D P0616 P0562 U0073
1720 B1D01 U0155 U3003 C1B00 P037D P0616 P0562 U0073
1721 B1D01 U0155 C1B00 U0073 <NA> <NA> <NA> <NA>
1722 B1D01 U0155 U3003 C1B00 P037D P0616 P0562 U0073
1723 B1D01 U0155 U3003 C1B00 P037D P0616 P0562 U0073
1724 B1D01 U0155 U3003 C1B00 P037D P0616 P0562 U0073
1725 U0155 U3003 C1B00 P037D P0616 P0562 U0073 <NA>
Как вы можете заметить, в этих кодах есть смесь. Например, U3003
в основном находится в V3
, но также может быть показано в V2
(последняя строка).
Я хотел бы реорганизовать этот фрейм данных с такими условиями:
- Каждый код может быть помещен в один столбец.
- Имена столбцов должны быть именами кодов.
- Если кодов больше, чем 8 столбцов, количество столбцов может отражать количество кодов.
- Значения ячеек могут содержать название кодов.
- Если код отсутствует в строке, должно появиться
NA
.
Помните, что мой исходный фрейм данных содержит гораздо больше строк, чем этот небольшой пример, извлеченный из оригинала.