> On Nov 20, 2016, at 11:11 AM, David Winsemius <dwinsem...@comcast.net> wrote:
> 
> 
>> On Nov 20, 2016, at 10:49 AM, Karim Mezhoud <kmezh...@gmail.com> wrote:
>> 
>> Yes the results does not have a date but 
>> successive DCE.1, DCE2, DCE.3 indicates
>> DCE.date1 , DCE.date2, DCE.date3 
>> I hope that the chronological order of date is conserved.
> 
> There are, however, 4 dates. See this pair of results. You can probably do 
> something if you ever figure out what it is that you precisely want. I think 
> the date ordering is automatic here:
> 
>> require(reshape2)
> Loading required package: reshape2
> 
>> dcast(dat, first.Name +  Name + Department ~ date, value.var='DCE')
>  first.Name   Name Department 2013-09-30 2013-12-28 2014-03-30 2014-06-28
> 1      Amish  Wives        TAS       0.59         NA       0.59         NA
> 2    Ancient Nation        QLH       0.54       0.28       0.54       0.28
> 3    Auction Videos        YME       0.57         NA       0.57         NA
>> dcast(dat, first.Name +  Name + Department ~ date, value.var='DP')
>  first.Name   Name Department 2013-09-30 2013-12-28 2014-03-30 2014-06-28
> 1      Amish  Wives        TAS       0.56         NA       0.56         NA
> 2    Ancient Nation        QLH       0.58       0.29       0.58       0.29
> 3    Auction Videos        YME       0.56         NA       0.56         NA

Yjos completes the process in the reshape2 world:

> mdat <- melt(dat, measure.vars=c("DCE", 'DP') )
> str(mdat)
'data.frame':   24 obs. of  6 variables:
 $ first.Name: Factor w/ 48 levels "Amish","Ancient",..: 3 1 2 3 1 2 3 1 2 3 ...
 $ Name      : Factor w/ 48 levels "Aliens","Behavior",..: 43 47 29 43 47 29 43 
47 29 43 ...
 $ Department: Factor w/ 8 levels "HXW","QLH","RAR",..: 8 6 2 8 6 2 8 6 2 8 ...
 $ date      : Date, format: "2013-09-30" "2013-09-30" ...
 $ variable  : Factor w/ 2 levels "DCE","DP": 1 1 1 1 1 1 1 1 1 1 ...
 $ value     : num  0.57 0.59 0.54 NA NA 0.28 0.57 0.59 0.54 NA ...

> dcast(mdat, first.Name +  Name + Department ~ date+variable )
  first.Name   Name Department 2013-09-30_DCE 2013-09-30_DP 2013-12-28_DCE
1      Amish  Wives        TAS           0.59          0.56             NA
2    Ancient Nation        QLH           0.54          0.58           0.28
3    Auction Videos        YME           0.57          0.56             NA
  2013-12-28_DP 2014-03-30_DCE 2014-03-30_DP 2014-06-28_DCE 2014-06-28_DP
1            NA           0.59          0.56             NA            NA
2          0.29           0.54          0.58           0.28          0.29
3            NA           0.57          0.56             NA            NA

-- 
David.

> 
> 
> 
>> Thanks,
>> Karim
>> 
>> 
>> On Sun, Nov 20, 2016 at 7:44 PM, David Winsemius <dwinsem...@comcast.net> 
>> wrote:
>> 
>>> On Nov 20, 2016, at 5:28 AM, Karim Mezhoud <kmezh...@gmail.com> wrote:
>>> 
>>> Sorry for the delay,
>>> Many Thanks for Mr. David and Mr. Petr
>>> I thinked  to use "sort" function to arrange chronologically  value by  
>>> 'date' (without 'date' is colnames) of each variables (DCE, DP).
>>> 
>>> 
>>> The solution of David seems to be simple to understand with "unlist" 
>>> function.
>>> The solution of Petr seems to be fancy. I did not find document  about "I" 
>>> argument for aggregate function.
>>> 
>>> How can know which value for which date?
>> 
>> You asked for a functional reshaping that did not have the date. Now you 
>> want the date? There was no date in the result you indicated was desired.   
>> ....??????
>> 
>> --
>> David.
>> 
>>> 
>>> I will save the reshaping/ordering dataframe  for later use.
>>> Many Thanks,
>>> Karim
>>> 
>>> 
>>> On Fri, Nov 18, 2016 at 11:34 AM, PIKAL Petr <petr.pi...@precheza.cz> wrote:
>>> Hi
>>> 
>>> same result can be achieved by
>>> 
>>> dat.ag<-aggregate(dat[ , c("DCE","DP")], by= list(dat$first.Name, dat$Name, 
>>> dat$Department) , "I")
>>> 
>>> Sorting according to the first row seems to be quite tricky. You could 
>>> probably get closer by using some combination of split and order and 
>>> arranging back chunks  of data
>>> 
>>> ooo1<-order(split(dat$DCE,interaction(dat$first.Name, dat$Name, 
>>> dat$Department, drop=T))[[1]])
>>> data.frame(sapply(split(dat$DCE,interaction(dat$first.Name, dat$Name, 
>>> dat$Department, drop=T)), rbind))[ooo1,]
>>>  Ancient.Nation.QLH Amish.Wives.TAS Auction.Videos.YME
>>> 2               0.28              NA                 NA
>>> 4               0.28              NA                 NA
>>> 1               0.54            0.59               0.57
>>> 3               0.54            0.59               0.57
>>> 
>>> however I wonder why the order according to the first row is necessary if 
>>> all NAs are on correct positions?
>>> 
>>> Cheers
>>> Petr
>>> 
>>> 
>>>> -----Original Message-----
>>>> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of David
>>>> Winsemius
>>>> Sent: Friday, November 18, 2016 9:30 AM
>>>> To: Karim Mezhoud <kmezh...@gmail.com>
>>>> Cc: r-help@r-project.org
>>>> Subject: Re: [R] aggregate dataframe by multiple factors
>>>> 
>>>> 
>>>>> On Nov 17, 2016, at 11:27 PM, Karim Mezhoud <kmezh...@gmail.com>
>>>> wrote:
>>>>> 
>>>>> Dear all,
>>>>> 
>>>>> the dat  has missing values NA,
>>>>> 
>>>>>   first.Name   Name Department  DCE   DP       date
>>>>> 5      Auction Videos        YME 0.57 0.56 2013-09-30
>>>>> 18       Amish  Wives        TAS 0.59 0.56 2013-09-30
>>>>> 34     Ancient Nation        QLH 0.54 0.58 2013-09-30
>>>>> 53     Auction Videos        YME   NA   NA 2013-12-28
>>>>> 66       Amish  Wives        TAS   NA   NA 2013-12-28
>>>>> 82     Ancient Nation        QLH 0.28 0.29 2013-12-28
>>>>> 102    Auction Videos        YME 0.57 0.56 2014-03-30
>>>>> 115      Amish  Wives        TAS 0.59 0.56 2014-03-30
>>>>> 131    Ancient Nation        QLH 0.54 0.58 2014-03-30
>>>>> 150    Auction Videos        YME   NA   NA 2014-06-28
>>>>> 163      Amish  Wives        TAS   NA   NA 2014-06-28
>>>>> 179    Ancient Nation        QLH 0.28 0.29 2014-06-28
>>>>> 
>>>>> 
>>>>> agg <- as.data.frame(aggregate(dat[ , c("DCE","DP")], by=
>>>>> list(dat$first.Name, dat$Name, dat$Department) , "sort"))
>>>> 
>>>> The closest I could get on a few attempts was:
>>>> 
>>>> (agg <- as.data.frame(aggregate(dat[ , c("DCE","DP")], by=
>>>> list(dat$first.Name, dat$Name, dat$Department) , function(d) { unlist(d)}))
>>>> )
>>>> 
>>>>  Group.1 Group.2 Group.3 DCE.1 DCE.2 DCE.3 DCE.4 DP.1 DP.2 DP.3 DP.4
>>>> 1 Ancient  Nation     QLH  0.54  0.28  0.54  0.28 0.58 0.29 0.58 0.29
>>>> 2   Amish   Wives     TAS  0.59    NA  0.59    NA 0.56   NA 0.56   NA
>>>> 3 Auction  Videos     YME  0.57    NA  0.57    NA 0.56   NA 0.56   NA
>>>> 
>>>> I think the sort operation might be somewhat ambiguous in this instance. I
>>>> tried:
>>>> 
>>>> (agg <- as.data.frame(aggregate(dat[ , c("DCE","DP")], by=
>>>> list(dat$first.Name, dat$Name, dat$Department) , function(d) {
>>>> unlist(lapply(d,sort))}))
>>>> )
>>>> 
>>>> With no success, not even a sorted result.
>>>> 
>>>> --
>>>> David.
>>>>> 
>>>>> 
>>>>> agg has list of value. I would separate value in different columns.
>>>>> 
>>>>> Group.1 Group.2 Group.3                    DCE                     DP
>>>>> 1 Ancient  Nation     QLH 0.28, 0.28, 0.54, 0.54 0.29, 0.29, 0.58, 0.58
>>>>> 2   Amish   Wives     TAS             0.59, 0.59             0.56, 0.56
>>>>> 3 Auction  Videos     YME             0.57, 0.57             0.56, 0.56
>>>>> 
>>>>> The  goal:
>>>>> 
>>>>> Group.1 Group.2 Group.3  DCE.1 DCE.2 DCE.3  DCE.4  DP.1  DP.2  DP.3  DP.4
>>>>> 1 Ancient  Nation     QLH    0.28     0.28    0.54     0.54     0.29, 
>>>>> 0.29,
>>>>> 0.58, 0.58
>>>>> 2   Amish   Wives     TAS        NA     NA     0.59, 0.59           NA
>>>>> NA  0.56, 0.56
>>>>> 3 Auction  Videos     YME         NA   NA      0.57, 0.57             NA
>>>>> NA  0.56, 0.56
>>>>> 
>>>>> 
>>>>> 
>>>>> dat <- structure(list(first.Name = structure(c(3L, 1L, 2L, 3L, 1L, 2L,
>>>>> 3L, 1L, 2L, 3L, 1L, 2L), .Label = c("Amish", "Ancient", "Auction",
>>>>> "Ax", "Bachelorette", "Basketball", "BBQ", "Cake", "Celebrity",
>>>>> "Chef", "Clean", "Colonial", "Comedy", "Comic", "Crocodile", "Dog",
>>>>> "Empire", "Extreme", "Farm", "Half Pint", "Hollywood", "House", "Ice
>>>>> Road", "Jersey", "Justice", "Love", "Mega", "Model", "Modern",
>>>>> "Mountain", "Mystery", "Myth", "New York", "Paradise", "Pioneer",
>>>>> "Queer", "Restaurant", "Road", "Royal", "Spouse", "Star", "Storage",
>>>>> "Survival", "The Great American", "Tool", "Treasure", "Wedding",
>>>>> "Wife"), class = "factor"), Name = structure(c(43L, 47L, 29L, 43L,
>>>>> 47L, 29L, 43L, 47L, 29L, 43L, 47L, 29L), .Label = c("Aliens",
>>>>> "Behavior", "Casino", "Casting Call", "Challenge", "Contest",
>>>>> "Crashers", "Crew", "Dad", "Dancing", "Date", "Disasters", "Dynasty",
>>>>> "Family", "Garage", "Greenlight", "Gypsies", "Haul", "Hot Rod",
>>>>> "Inventor", "Jail", "Job", "Justice", "Marvels", "Master", "Mates",
>>>>> "Model", "Moms", "Nation", "Ninja", "Patrol", "People", "Pitmasters",
>>>>> "Queens", "Rescue", "Rivals", "Room", "Rooms", "Rules", "Star",
>>>>> "Stars", "Superhero", "Videos", "VIP", "Wars", "Wishes", "Wives",
>>>>> "Wrangler"), class = "factor"), Department = structure(c(8L, 6L, 2L,
>>>>> 8L, 6L, 2L, 8L, 6L, 2L, 8L, 6L, 2L), .Label = c("HXW", "QLH", "RAR",
>>>>> "RYC", "SYI", "TAS", "VUV", "YME"), class = "factor"),
>>>>>   DCE = c(0.57, 0.59, 0.54, NA, NA, 0.28, 0.57, 0.59, 0.54,
>>>>>   NA, NA, 0.28), DP = c(0.56, 0.56, 0.58, NA, NA, 0.29, 0.56,
>>>>>   0.56, 0.58, NA, NA, 0.29), date = structure(c(15978, 15978,
>>>>>   15978, 16067, 16067, 16067, 16159, 16159, 16159, 16249, 16249,
>>>>>   16249), class = "Date")), description = "", row.names = c(5L, 18L,
>>>>> 34L, 53L, 66L, 82L, 102L, 115L, 131L, 150L, 163L, 179L), class =
>>>>> "data.frame", .Names = c("first.Name", "Name", "Department", "DCE",
>>>>> "DP", "date"))
>>>>> 
>>>>>    [[alternative HTML version deleted]]
>>>>> 
>>>>> ______________________________________________
>>>>> R-help@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
>>>> 
>>>> ______________________________________________
>>>> R-help@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.
>>> 
>> 
>> David Winsemius
>> Alameda, CA, USA
>> 
>> 
> 
> David Winsemius
> Alameda, CA, USA
> 
> ______________________________________________
> R-help@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

______________________________________________
R-help@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.

Reply via email to