【发布时间】:2020-04-03 10:01:20
【问题描述】:
我有这个数据集:
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必须出现。
请注意,我的原始数据框中包含的行数比从原始数据中提取的小示例要多得多。
【问题讨论】:
标签: r dataframe dplyr tidyverse