簡體   English   中英

在R中按組將數據從長整形重塑到寬整形

[英]Reshaping Data from Long to Wide by Group in R

我的數據集給我帶來了麻煩。 我不認為這會成為一個如此復雜的問題,但現在我感覺已經有了。

我有一個看起來與此類似的數據集

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可能有多行,我意識到某些列標題將不相同,因此也有一種方法可以填寫NA。 理想情況下,也許數據看起來像這樣,但是如果這太麻煩了,最好保留長格式嗎? 非常感謝!

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>

如果需要,您可以稍后刪除caseID列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM