ddply/tapply and set function

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

ddply/tapply and set function

A. Mani
I want a data frame (derived from another data frame) of the form

Type   Set
1         {1,5, 7}
2         {3,8)
..        ....

tapply(Id,Type, set) works, but does not yield a data frame.
'set' is from package set/set6/etc
ddply does not seem to work with the function.
How should I proceed with this optimally?


Thanks and Best

A Mani

Prof.Dr.(Miss) A Mani
ASL, AMS, ISRS, CLC, CMS, MTA
Senior Member, International Rough Set Society
Research Scientist, Indian Statistical Institute, Kolkata
Formerly HBCSE, TIFR, CU.
Homepage: https://www.logicamani.in
Blog: https://logicamani.blogspot.in/
Research Gate: https://www.researchgate.net/profile/Mani_A
sip:[hidden email]
Pronouns: She/Her/Hers

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: ddply/tapply and set function

Jim Lemon-4
Hi  A,
I'm unable to work out what you are using as input. Maybe:

id<-data.frame(Type=c(1,2,1,1,2),set=c(1,3,5,7,8))

but that doesn't work with your

tapply(id,Type,set)

command. Perhaps a bit more detail?

Jim



On Wed, Feb 17, 2021 at 7:48 PM A. Mani <[hidden email]> wrote:

>
> I want a data frame (derived from another data frame) of the form
>
> Type   Set
> 1         {1,5, 7}
> 2         {3,8)
> ..        ....
>
> tapply(Id,Type, set) works, but does not yield a data frame.
> 'set' is from package set/set6/etc
> ddply does not seem to work with the function.
> How should I proceed with this optimally?
>
>
> Thanks and Best
>
> A Mani
>
> Prof.Dr.(Miss) A Mani
> ASL, AMS, ISRS, CLC, CMS, MTA
> Senior Member, International Rough Set Society
> Research Scientist, Indian Statistical Institute, Kolkata
> Formerly HBCSE, TIFR, CU.
> Homepage: https://www.logicamani.in
> Blog: https://logicamani.blogspot.in/
> Research Gate: https://www.researchgate.net/profile/Mani_A
> sip:[hidden email]
> Pronouns: She/Her/Hers
>
> ______________________________________________
> [hidden email] 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.

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: ddply/tapply and set function

A. Mani
The original data frame can be like
Type   Id
1         1
1         5
1         7
2         3
2         8
..        ....

tapply(Id,Type,set) will yield the sets correctly (assuming the data
frame is attached) but not a data frame of the form mentioned.

A similar ddply command does not work at all with the function 'set'
(while 'mean' etc work fine)

Thanks and Best

A Mani

Prof.Dr.(Miss) A Mani
ASL, AMS, ISRS, CLC, CMS, MTA
Senior Member, International Rough Set Society
Research Scientist, Indian Statistical Institute, Kolkata
Formerly HBCSE, TIFR, CU.
Homepage: https://www.logicamani.in
Blog: https://logicamani.blogspot.in/
Research Gate: https://www.researchgate.net/profile/Mani_A
sip:[hidden email]
Pronouns: She/Her/Hers

On Wed, Feb 17, 2021 at 4:24 PM Jim Lemon <[hidden email]> wrote:

>
> Hi  A,
> I'm unable to work out what you are using as input. Maybe:
>
> id<-data.frame(Type=c(1,2,1,1,2),set=c(1,3,5,7,8))
>
> but that doesn't work with your
>
> tapply(id,Type,set)
>
> command. Perhaps a bit more detail?
>
> Jim
>
>
>
> On Wed, Feb 17, 2021 at 7:48 PM A. Mani <[hidden email]> wrote:
> >
> > I want a data frame (derived from another data frame) of the form
> >
> > Type   Set
> > 1         {1,5, 7}
> > 2         {3,8)
> > ..        ....
> >
> > tapply(Id,Type, set) works, but does not yield a data frame.
> > 'set' is from package set/set6/etc
> > ddply does not seem to work with the function.
> > How should I proceed with this optimally?
> >
> >
> > Thanks and Best
> >
> > A Mani
> >
> > Prof.Dr.(Miss) A Mani
> > ASL, AMS, ISRS, CLC, CMS, MTA
> > Senior Member, International Rough Set Society
> > Research Scientist, Indian Statistical Institute, Kolkata
> > Formerly HBCSE, TIFR, CU.
> > Homepage: https://www.logicamani.in
> > Blog: https://logicamani.blogspot.in/
> > Research Gate: https://www.researchgate.net/profile/Mani_A
> > sip:[hidden email]
> > Pronouns: She/Her/Hers
> >
> > ______________________________________________
> > [hidden email] 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.

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: ddply/tapply and set function

Bert Gunter-2
df <- data.frame(X1 = c(1,1,1,2,2), X2 = c(1,5,7,3,8))
> df
  X1 X2
1  1  1
2  1  5
3  1  7
4  2  3
5  2  8
> v <- with(df, tapply(X2, X1, c))
## v is a list, and I would work directly with this rather than converting
to a data.frame. But if you insist:

> df2 <- data.frame(v, row.names = names(v))
> df2[1,1] ## produces a **list** with a single component containing the
vector c(1,5,7)
[[1]]
[1] 1 5 7

> df2[[1,1]] ## produces a vector -- note doubled brackets
[1] 1 5 7


Cheers,
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 Wed, Feb 17, 2021 at 6:50 AM A. Mani <[hidden email]> wrote:

> The original data frame can be like
> Type   Id
> 1         1
> 1         5
> 1         7
> 2         3
> 2         8
> ..        ....
>
> tapply(Id,Type,set) will yield the sets correctly (assuming the data
> frame is attached) but not a data frame of the form mentioned.
>
> A similar ddply command does not work at all with the function 'set'
> (while 'mean' etc work fine)
>
> Thanks and Best
>
> A Mani
>
> Prof.Dr.(Miss) A Mani
> ASL, AMS, ISRS, CLC, CMS, MTA
> Senior Member, International Rough Set Society
> Research Scientist, Indian Statistical Institute, Kolkata
> Formerly HBCSE, TIFR, CU.
> Homepage: https://www.logicamani.in
> Blog: https://logicamani.blogspot.in/
> Research Gate: https://www.researchgate.net/profile/Mani_A
> sip:[hidden email]
> Pronouns: She/Her/Hers
>
> On Wed, Feb 17, 2021 at 4:24 PM Jim Lemon <[hidden email]> wrote:
> >
> > Hi  A,
> > I'm unable to work out what you are using as input. Maybe:
> >
> > id<-data.frame(Type=c(1,2,1,1,2),set=c(1,3,5,7,8))
> >
> > but that doesn't work with your
> >
> > tapply(id,Type,set)
> >
> > command. Perhaps a bit more detail?
> >
> > Jim
> >
> >
> >
> > On Wed, Feb 17, 2021 at 7:48 PM A. Mani <[hidden email]> wrote:
> > >
> > > I want a data frame (derived from another data frame) of the form
> > >
> > > Type   Set
> > > 1         {1,5, 7}
> > > 2         {3,8)
> > > ..        ....
> > >
> > > tapply(Id,Type, set) works, but does not yield a data frame.
> > > 'set' is from package set/set6/etc
> > > ddply does not seem to work with the function.
> > > How should I proceed with this optimally?
> > >
> > >
> > > Thanks and Best
> > >
> > > A Mani
> > >
> > > Prof.Dr.(Miss) A Mani
> > > ASL, AMS, ISRS, CLC, CMS, MTA
> > > Senior Member, International Rough Set Society
> > > Research Scientist, Indian Statistical Institute, Kolkata
> > > Formerly HBCSE, TIFR, CU.
> > > Homepage: https://www.logicamani.in
> > > Blog: https://logicamani.blogspot.in/
> > > Research Gate: https://www.researchgate.net/profile/Mani_A
> > > sip:[hidden email]
> > > Pronouns: She/Her/Hers
> > >
> > > ______________________________________________
> > > [hidden email] 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.
>
> ______________________________________________
> [hidden email] 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]]

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: ddply/tapply and set function

A. Mani
Update:
The whole problem was due to set() from library sets.
'sets' is not a very consistent package, and users should be warned.

Set$new() and as.Set() from set6 work in a predictable, object-oriented way.

Thanks and Best

A Mani

Prof.Dr.(Miss) A Mani
ASL, AMS, ISRS, CLC, CMS, MTA
Senior Member, International Rough Set Society
Research Scientist, Indian Statistical Institute, Kolkata
Formerly HBCSE, TIFR, CU.
Homepage: https://www.logicamani.in
Blog: https://logicamani.blogspot.in/
Research Gate: https://www.researchgate.net/profile/Mani_A
sip:[hidden email]
Pronouns: She/Her/Hers

On Wed, Feb 17, 2021 at 9:50 PM Bert Gunter <[hidden email]> wrote:

>
> df <- data.frame(X1 = c(1,1,1,2,2), X2 = c(1,5,7,3,8))
> > df
>   X1 X2
> 1  1  1
> 2  1  5
> 3  1  7
> 4  2  3
> 5  2  8
> > v <- with(df, tapply(X2, X1, c))
> ## v is a list, and I would work directly with this rather than converting to a data.frame. But if you insist:
>
> > df2 <- data.frame(v, row.names = names(v))
> > df2[1,1] ## produces a **list** with a single component containing the vector c(1,5,7)
> [[1]]
> [1] 1 5 7
>
> > df2[[1,1]] ## produces a vector -- note doubled brackets
> [1] 1 5 7
>
>
> Cheers,
> 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 Wed, Feb 17, 2021 at 6:50 AM A. Mani <[hidden email]> wrote:
>>
>> The original data frame can be like
>> Type   Id
>> 1         1
>> 1         5
>> 1         7
>> 2         3
>> 2         8
>> ..        ....
>>
>> tapply(Id,Type,set) will yield the sets correctly (assuming the data
>> frame is attached) but not a data frame of the form mentioned.
>>
>> A similar ddply command does not work at all with the function 'set'
>> (while 'mean' etc work fine)
>>
>> Thanks and Best
>>
>> A Mani
>>
>> Prof.Dr.(Miss) A Mani
>> ASL, AMS, ISRS, CLC, CMS, MTA
>> Senior Member, International Rough Set Society
>> Research Scientist, Indian Statistical Institute, Kolkata
>> Formerly HBCSE, TIFR, CU.
>> Homepage: https://www.logicamani.in
>> Blog: https://logicamani.blogspot.in/
>> Research Gate: https://www.researchgate.net/profile/Mani_A
>> sip:[hidden email]
>> Pronouns: She/Her/Hers
>>
>> On Wed, Feb 17, 2021 at 4:24 PM Jim Lemon <[hidden email]> wrote:
>> >
>> > Hi  A,
>> > I'm unable to work out what you are using as input. Maybe:
>> >
>> > id<-data.frame(Type=c(1,2,1,1,2),set=c(1,3,5,7,8))
>> >
>> > but that doesn't work with your
>> >
>> > tapply(id,Type,set)
>> >
>> > command. Perhaps a bit more detail?
>> >
>> > Jim
>> >
>> >
>> >
>> > On Wed, Feb 17, 2021 at 7:48 PM A. Mani <[hidden email]> wrote:
>> > >
>> > > I want a data frame (derived from another data frame) of the form
>> > >
>> > > Type   Set
>> > > 1         {1,5, 7}
>> > > 2         {3,8)
>> > > ..        ....
>> > >
>> > > tapply(Id,Type, set) works, but does not yield a data frame.
>> > > 'set' is from package set/set6/etc
>> > > ddply does not seem to work with the function.
>> > > How should I proceed with this optimally?
>> > >
>> > >
>> > > Thanks and Best
>> > >
>> > > A Mani
>> > >
>> > > Prof.Dr.(Miss) A Mani
>> > > ASL, AMS, ISRS, CLC, CMS, MTA
>> > > Senior Member, International Rough Set Society
>> > > Research Scientist, Indian Statistical Institute, Kolkata
>> > > Formerly HBCSE, TIFR, CU.
>> > > Homepage: https://www.logicamani.in
>> > > Blog: https://logicamani.blogspot.in/
>> > > Research Gate: https://www.researchgate.net/profile/Mani_A
>> > > sip:[hidden email]
>> > > Pronouns: She/Her/Hers
>> > >
>> > > ______________________________________________
>> > > [hidden email] 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.
>>
>> ______________________________________________
>> [hidden email] 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.

______________________________________________
[hidden email] 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.