在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列