在R中按组从长到宽重塑数据
我有一个数据集给我带来了一些麻烦。我没想到它会变成这么复杂的问题,但现在我觉得它已经变成了 我有一个看起来有点类似的数据集在R中按组从长到宽重塑数据,r,dplyr,reshape,tidyr,R,Dplyr,Reshape,Tidyr,我有一个数据集给我带来了一些麻烦。我没想到它会变成这么复杂的问题,但现在我觉得它已经变成了 我有一个看起来有点类似的数据集 CaseInfoColNames CaseInfoData UID RunTime **WarrantCase** XXXXXXXXXXXX P19 TIME Desc . P19 TIME Bond 500 P19 TIME Remarks
CaseInfoColNames CaseInfoData UID RunTime
**WarrantCase** XXXXXXXXXXXX P19 TIME
Desc . P19 TIME
Bond 500 P19 TIME
Remarks No License P19 TIME
**WarrantCase** YYYYYYYYYYYY P19 TIME
Desc . P19 TIME
Bond 200 P19 TIME
**CaseNumber** 123456789134 X20 TIME
Desc BOND X20 TIME
Bond 1000 X20 TIME
CommentCase DIV 2 X20 TIME
Charge Drive w.o.Lic X20 TIME
基本上,有ID,每个ID可以有两种类型,一种是“授权案例”或“案例编号”。这两个标题下面的行应该成为列标题。每个ID可以有多行,我意识到有些列标题是不一样的,所以也有办法填充NAs。理想情况下,数据可能看起来像这样,但如果这是一个太多的麻烦,也许最好以长格式离开?非常感谢
UID RunTime WarrantCase Desc Bond Remarks
P19 TIME XXXXXXXXXXXX . 500 No License
P19 TIME YYYYYYYYYYYY . 200 NA
X20 TIME NA BOND 1000 NA
CaseNumber CommentCase Charge
NA NA NA
NA NA NA
123.. DIV 2 Drive w.o. Lic
诀窍是为每个案例创建一个唯一的ID,以便每个案例中的所有行都具有相同的ID:
df1 %>%
mutate(caseID = cumsum(as.numeric(grepl("\\*\\*",df1$CaseInfoColNames)))) %>%
spread(CaseInfoColNames,CaseInfoData)
UID RunTime caseID **CaseNumber** **WarrantCase** Bond Charge CommentCase Desc Remarks
1 P19 TIME 1 <NA> XXXXXXXXXXXX 500 <NA> <NA> . No.License
2 P19 TIME 2 <NA> YYYYYYYYYYYY 200 <NA> <NA> . <NA>
3 X20 TIME 3 123456789134 <NA> 1000 Drive.w.o.Lic DIV.2 BOND <NA>
df1%>%
mutate(caseID=cumsum(as.numeric(grepl(\\*\\\*”,df1$CaseInfoColNames))%>%
排列(CaseInfoColNames、CaseInfoData)
UID运行时案例ID**案例编号****保修案例**保函费用注释案例说明备注
第19页第1页XXXXXXXX页第500页。牌照号码
2 P19时间2 YYYYYYYY 200。
3 X20时间3 123456789134 1000驱动器w.o.Lic分区2键合
如果需要,可以稍后删除caseID列