[R] R-How to unlist data frame multiple structured list column value and new column

David Winsemius dwinsemius at comcast.net
Wed Nov 22 03:53:29 CET 2017


> On Nov 21, 2017, at 7:13 AM, muthu m <muthu.psg.swift at gmail.com> wrote:
> 
> Hi,
> 
> How to unlist  list column value and add column into data frame.

After looking at this and playing with the output of dput on the first 4 rows in this sample of what I suspect is a much larger data object my suspicion is that this cam from a JSON file or a SQL file and got inappropriately rearranged into a dataframe. It probably should have been processed differently. My advice would be to go back a couple of steps to the original data input process and see if you can deliver a less mangled version of your data.

-- 
David.
> 
> Data frame
> 
> ID      ContractDe                                                                       PassengersDe                                                    TrainnerDe
> 
>  1      list(ConID=c("Zx","78yu"),ConRes = c("98","Tut"))                             list(PassID =1,PassIt="Lits,uy")                         list(Trnid=1,Trncont =5,EmpAddInfo=list(list(CohID ="pi",InVoice=77)))
> 
>  2      list(ConID=c("Half","Yut","Weq"),ConRes =c("ref","Cr"))                       list(PassID =c("pfil","Q"),Name ="Tic",PassIt="S5,Y1     list(Trnid=7,Trncont =3,EmpAddInfo=list(list(CohID =c("AB","NI","OL"),InVoice = c("4","Y"))))
> 
>  3      list(ConID=c("Ui","pric"),ConRes = c("Num","Patch"))                          list(PassID =1,PassIt ="St,Bp")                          list(Trnid=c("U", "l"),Trncont=c("10","78"),EmpAddInfo=list(list(CohID =c("AB","NI","OL"),InVoice =c("4","Y"))))
> 
>  4      list(ConID=c("2","7","IO"),ConRes = c("Res","Qty"),ConVal =c("Wno", "ip"))    list(PassID =1,Name ="RT",Name1 ="RR",PassIt="st7,st9")  list(Trnid=c("1", "3"),Trncont=c("yt","re"),EmpAddInfo=list(list(CohID =c("Ly","qp"),InVoice =c("2","P"))))
> 
> 
> 
> 
> 
> Expected data frame.
> 
> ID   ConID         ConRes    ConVal     PassID       PassIt    Name   Name1     Trnid    Trncont    CohID    InVoice
> 
> 1   Zx,78yu       98,Tut     NA          1          Lits,uy    NA     NA         1        5         pi         77
> 
> 2   Half,Yut,Weq  ref,Cr     NA          pfil,Q     S5,Y1      Tic    NA         7        3       AB,NI,OL     4,Y
> 
> 3   Ui,pric       Num,Patch  NA           1         St,Bp      NA     NA         U,l    10,78     AB,NI,OL     4,Y
> 
> 4   2,7,IO        Res,Qty    Wno,ip       1         st7,st9    RT     st7,st9     1,3   yt,re       Ly,qp      2,P
> 
> 
> 
> dput
> 
> 
> structure(list(ID = c("1", "2", "3","4"), ContractDe = list(
>    structure(list(ConID = c("Zx", "78yu"), ConRes = c("98",
>    "Tut")), .Names = c("ConID", "ConRes"), class = "data.frame", row.names = 1:2),
>    structure(list(ConID = c("Half", "Yut","Weq"), ConRes = c("ref",
>    "Cr")), .Names = c("ConID", "ConRes"), class = "data.frame", row.names = 1:2),
> structure(list(ConID = c("Ui", "pric"), ConRes = c("Num",
>    "Patch")), .Names = c("ConID", "ConRes"), class = "data.frame", row.names = 1:2),
>    structure(list(ConID = c("2", "7","IO"), ConRes = c("Res",
>    "Qty"),ConVal=c("Wno","ip")), .Names = c("ConID", "ConRes","ConVal"), class = "data.frame", row.names = 1:2)),
>    PassengersDe = list(structure(list(PassID = 1, PassIt = "Lits, uy"), .Names = c("PassID",
>    "PassIt"), class = "data.frame", row.names = 1L), structure(list(
>        PassID = c("pfil","Q"), Name = "Tic", PassIt = "S5, Y1"), .Names = c("PassID",
>    "Name", "PassIt"), class = "data.frame", row.names = 1L),
> structure(list(PassID = 1, PassIt = "St, Bp"), .Names = c("PassID",
>    "PassIt"), class = "data.frame", row.names = 1L),
> structure(list(PassID = 1, Name = "RT", Name1 = "RR", PassIt = "st7, st9"), .Names = c("PassID",
>    "Name", "Name1", "PassIt"), class = "data.frame", row.names = 1L)),
>    TrainnerDe = list(structure(list(Trnid = 1, Trncont = 5, EmpAddInfo = list(
>        structure(list(CohID = "pi", InVoice = 77), .Names = c("CohID",
>        "InVoice"), class = "data.frame", row.names = 1L))), .Names = c("Trnid",
>    "Trncont", "EmpAddInfo"), class = "data.frame", row.names = 1L),
>        structure(list(Trnid =7,Trncont = 3, EmpAddInfo = list(structure(list(
>            CohID = c("AB", "NI", "OL"), InVoice = c("4", "Y")), .Names = c("CohID",
>        "InVoice"), class = "data.frame", row.names = 1L))), .Names = c("Trnid",
>        "Trncont", "EmpAddInfo"), class = "data.frame", row.names = 1L),
> structure(list(Trnid =c("U","l"),Trncont =c("10","78"), EmpAddInfo = list(structure(list(
>            CohID = c("AB", "NI", "OL"), InVoice = c("4", "Y")), .Names = c("CohID",
>        "InVoice"), class = "data.frame", row.names = 1L))), .Names = c("Trnid",
>        "Trncont", "EmpAddInfo"), class = "data.frame", row.names = 1L),
>        structure(list(Trnid = c("1","3"), Trncont = c("yt","re"), EmpAddInfo = list(structure(list(
>            CohID = c("Ly","qp"), InVoice = c("2","P")), .Names = c("CohID", "InVoice"
>        ), class = "data.frame", row.names = 1L))), .Names = c("Trnid",
>        "Trncont", "EmpAddInfo"), class = "data.frame", row.names = 1L))), .Names = c("ID",
> "ContractDe", "PassengersDe", "TrainnerDe"), row.names = c(NA, 4L), class = "data.frame")
> 
> 
> i was stuck on this change part of my project, please help me to out this. Thanks.
> 
> 
> 
> Sent from Outlook<http://aka.ms/weboutlook>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA

'Any technology distinguishable from magic is insufficiently advanced.'   -Gehm's Corollary to Clarke's Third Law



More information about the R-help mailing list