[R] Aggregate over multiple and unequal column length data frames

Bert Gunter bgunter.4567 at gmail.com
Tue Feb 27 16:52:53 CET 2018


Then you need to rethink your data structure. Use a list instead of a data
frame. The components of a list can have different lengths, and the "apply"
family of functions (lapply(), etc.) can operate on them. Consult any good
R tutorial for details.

Cheers,
Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )

On Tue, Feb 27, 2018 at 5:54 AM, Ek Esawi <esawiek at gmail.com> wrote:

> Thank you Pikal and Bert. My apology for posting parts of my previous
> email in HTML. Bert's suggestion will work but i am wondering if there
> is an alternative
> especially in the case where the data frames are big; that is the
> difference in lengths among them is large. Below is a list of sample
> date frames and desired result.
>
> EK
>
>
> dput(df1<-data.frame(col1=c(1,2,3,4,5),col2=c("aa","aa","bb","cc","dd")))
> dput(df2<-data.frame(col1=c(1,2,4,5),col2=c("bb","bb","cc","bb")))
> dput(df3<-data.frame(col1=c(1,3),col2=c("aa","aa")))
> # desired result
> dput(dfn<-data.frame(col1=c(2,2,1,1),col2=c(0,3,1,0),col3=c(
> 2,0,0,0),row.names
> = c("aa","bb","cc","dd")))
>
> On Fri, Feb 23, 2018 at 7:45 AM, PIKAL Petr <petr.pikal at precheza.cz>
> wrote:
> > Hi
> >
> > Your example is rather confusing - partly because HTML formating, partly
> because weird coding.
> >
> > You probably could concatenate your data frames e.g. by rbind or merge
> and after that you could try to aggregate them somehow.
> >
> > I could construct example data.frames myself but most probably they
> would be different from yours and also the result would not be necessary
> the same as you expect.
> >
> > You should post those data frames as output from dput(data) and show us
> real desired result from those example data frames.
> >
> > Cheers
> > Petr
> >
> >> -----Original Message-----
> >> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Ek
> Esawi
> >> Sent: Wednesday, February 21, 2018 3:34 AM
> >> To: r-help at r-project.org
> >> Subject: [R] Aggregate over multiple and unequal column length data
> frames
> >>
> >>  Hi All--
> >>
> >> I have generated several 2 column data frames with variable length. The
> data
> >> frames have the same column names and variable types. I was trying to
> >> aggregate over the 2nd column for all the date frames, but could not
> figure out
> >> how.
> >>
> >> I thought i could make them all of equal length then combine them in 1
> data
> >> frame where i can use aggregate, the formula version Or to put them in
> a list
> >> and loop use lapply but did not know how to do that and thought there
> might
> >> be a simpler way.
> >>
> >> Below is an example of 3 data frames and the desired result; note that
> some
> >> levels don't appear in all and may be null over all variable, like the
> case of dd
> >> on the desired result which i would like to list all levels even if
> some are all null.
> >>
> >> Thanks in advance,
> >>
> >> EK
> >>
> >>    df1           df2          df3
> >>
> >> c1 c2 c1 c2 c1 c2
> >> 1 aa 1 bb 1 aa
> >> 2 aa 2 bb 2 aa
> >> 3 bb 3 cc
> >> 4 cc 4 bb
> >> 5 bb
> >>
> >> desired result
> >>
> >> c1 c2 c2 c2
> >> aa 2 2
> >> bb 1 2 2
> >> cc 1 1
> >> dd
> >>
> >> [[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.
> >
> > ________________________________
> > Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a jsou
> určeny pouze jeho adresátům.
> > Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě
> neprodleně jeho odesílatele. Obsah tohoto emailu i s přílohami a jeho kopie
> vymažte ze svého systému.
> > Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento
> email jakkoliv užívat, rozšiřovat, kopírovat či zveřejňovat.
> > Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou
> modifikacemi či zpožděním přenosu e-mailu.
> >
> > V případě, že je tento e-mail součástí obchodního jednání:
> > - vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření
> smlouvy, a to z jakéhokoliv důvodu i bez uvedení důvodu.
> > - a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně
> přijmout; Odesílatel tohoto e-mailu (nabídky) vylučuje přijetí nabídky ze
> strany příjemce s dodatkem či odchylkou.
> > - trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve
> výslovným dosažením shody na všech jejích náležitostech.
> > - odesílatel tohoto emailu informuje, že není oprávněn uzavírat za
> společnost žádné smlouvy s výjimkou případů, kdy k tomu byl písemně zmocněn
> nebo písemně pověřen a takové pověření nebo plná moc byly adresátovi tohoto
> emailu případně osobě, kterou adresát zastupuje, předloženy nebo jejich
> existence je adresátovi či osobě jím zastoupené známá.
> >
> > This e-mail and any documents attached to it may be confidential and are
> intended only for its intended recipients.
> > If you received this e-mail by mistake, please immediately inform its
> sender. Delete the contents of this e-mail with all attachments and its
> copies from your system.
> > If you are not the intended recipient of this e-mail, you are not
> authorized to use, disseminate, copy or disclose this e-mail in any manner.
> > The sender of this e-mail shall not be liable for any possible damage
> caused by modifications of the e-mail or by delay with transfer of the
> email.
> >
> > In case that this e-mail forms part of business dealings:
> > - the sender reserves the right to end negotiations about entering into
> a contract in any time, for any reason, and without stating any reasoning.
> > - if the e-mail contains an offer, the recipient is entitled to
> immediately accept such offer; The sender of this e-mail (offer) excludes
> any acceptance of the offer on the part of the recipient containing any
> amendment or variation.
> > - the sender insists on that the respective contract is concluded only
> upon an express mutual agreement on all its aspects.
> > - the sender of this e-mail informs that he/she is not authorized to
> enter into any contracts on behalf of the company except for cases in which
> he/she is expressly authorized to do so in writing, and such authorization
> or power of attorney is submitted to the recipient or the person
> represented by the recipient, or the existence of such authorization is
> known to the recipient of the person represented by the recipient.
>
> ______________________________________________
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list