Hi R users
Imagine the table "base":
p=c("d","d","b","b","a","a")
q=c("v1","v2","v1","v2","v1","v2")
r=c(5,2,4,8,9,7)
base=data.frame(p,q,r)
base
p q r
1 d v1 5
2 d v2 2
3 b v1 4
4 b v2 8
5 a v1 9
6 a v2 7
How programming R to get this result:
v1 v2
a 9 7
b 4 8
d 5 2
I tried the function table but the result is divided in several matrix:
table(base$p,base$q,base$r)
, , = 2
v1 v2
a 0 0
b 0 0
d 0 1
, , = 4
v1 v2
a 0 0
b 1 0
d 0 0
, , = 5
v1 v2
a 0 0
b 0 0
d 1 0
, , = 7
v1 v2
a 0 1
b 0 0
d 0 0
, , = 8
v1 v2
a 0 0
b 0 1
d 0 0
, , = 9
v1 v2
a 1 0
b 0 0
d 0 0
SIncerely yours
--
View this message in context:
http://r.789695.n4.nabble.com/How-to-built-a-pivot-table-of-value-tp4651539.html
Sent from the R help mailing list archive at Nabble.com.
Hi, One way could be with(base, tapply(r, list(p, q), sum)) HTH, Jorge.- On Sat, Dec 1, 2012 at 11:37 PM, CE.KA <> wrote:> Hi R users > > Imagine the table "base": > p=c("d","d","b","b","a","a") > q=c("v1","v2","v1","v2","v1","v2") > r=c(5,2,4,8,9,7) > base=data.frame(p,q,r) > base > > p q r > 1 d v1 5 > 2 d v2 2 > 3 b v1 4 > 4 b v2 8 > 5 a v1 9 > 6 a v2 7 > > How programming R to get this result: > > v1 v2 > a 9 7 > b 4 8 > d 5 2 > > I tried the function table but the result is divided in several matrix: > table(base$p,base$q,base$r) > , , = 2 > > > v1 v2 > a 0 0 > b 0 0 > d 0 1 > > , , = 4 > > > v1 v2 > a 0 0 > b 1 0 > d 0 0 > > , , = 5 > > > v1 v2 > a 0 0 > b 0 0 > d 1 0 > > , , = 7 > > > v1 v2 > a 0 1 > b 0 0 > d 0 0 > > , , = 8 > > > v1 v2 > a 0 0 > b 0 1 > d 0 0 > > , , = 9 > > > v1 v2 > a 1 0 > b 0 0 > d 0 0 > > SIncerely yours > > > > -- > View this message in context: > http://r.789695.n4.nabble.com/How-to-built-a-pivot-table-of-value-tp4651539.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > 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]]
On 01-12-2012, at 13:37, CE.KA wrote:> Hi R users > > Imagine the table "base": > p=c("d","d","b","b","a","a") > q=c("v1","v2","v1","v2","v1","v2") > r=c(5,2,4,8,9,7) > base=data.frame(p,q,r) > base > > p q r > 1 d v1 5 > 2 d v2 2 > 3 b v1 4 > 4 b v2 8 > 5 a v1 9 > 6 a v2 7 > > How programming R to get this result: > > v1 v2 > a 9 7 > b 4 8 > d 5 2 >xtabs(r~p+q,data=base) Output --------- q p v1 v2 a 9 7 b 4 8 d 5 2 Berend
One way, using the plyr package would be: library(plyr) dcast(base, p ~ q) John Kane Kingston ON Canada> -----Original Message----- > From: ce.kaya75 at yahoo.fr > Sent: Sat, 1 Dec 2012 04:37:02 -0800 (PST) > To: r-help at r-project.org > Subject: [R] How to built a pivot table of value > > Hi R users > > Imagine the table "base": > p=c("d","d","b","b","a","a") > q=c("v1","v2","v1","v2","v1","v2") > r=c(5,2,4,8,9,7) > base=data.frame(p,q,r) > base > > p q r > 1 d v1 5 > 2 d v2 2 > 3 b v1 4 > 4 b v2 8 > 5 a v1 9 > 6 a v2 7 > > How programming R to get this result: > > v1 v2 > a 9 7 > b 4 8 > d 5 2 > > I tried the function table but the result is divided in several matrix: > table(base$p,base$q,base$r) > , , = 2 > > > v1 v2 > a 0 0 > b 0 0 > d 0 1 > > , , = 4 > > > v1 v2 > a 0 0 > b 1 0 > d 0 0 > > , , = 5 > > > v1 v2 > a 0 0 > b 0 0 > d 1 0 > > , , = 7 > > > v1 v2 > a 0 1 > b 0 0 > d 0 0 > > , , = 8 > > > v1 v2 > a 0 0 > b 0 1 > d 0 0 > > , , = 9 > > > v1 v2 > a 1 0 > b 0 0 > d 0 0 > > SIncerely yours > > > > -- > View this message in context: > http://r.789695.n4.nabble.com/How-to-built-a-pivot-table-of-value-tp4651539.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > 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.____________________________________________________________ GET FREE SMILEYS FOR YOUR IM & EMAIL - Learn more at http://www.inbox.com/smileys Works with AIM?, MSN? Messenger, Yahoo!? Messenger, ICQ?, Google Talk? and most webmails
Blast, you're right. I tend to load both at the same time and confused the two. It should be reshape2 John Kane Kingston ON Canada> -----Original Message----- > From: bhh at xs4all.nl > Sent: Sat, 1 Dec 2012 15:20:13 +0100 > To: jrkrideau at inbox.com > Subject: Re: [R] How to built a pivot table of value > > > On 01-12-2012, at 14:56, John Kane wrote: > >> One way, using the plyr package would be: >> >> library(plyr) >> dcast(base, p ~ q) >> > > Shouldn't that be library(reshape2) ? > > Berend > >> John Kane >> Kingston ON Canada >> >> >>> -----Original Message----- >>> From: ce.kaya75 at yahoo.fr >>> Sent: Sat, 1 Dec 2012 04:37:02 -0800 (PST) >>> To: r-help at r-project.org >>> Subject: [R] How to built a pivot table of value >>> >>> Hi R users >>> >>> Imagine the table "base": >>> p=c("d","d","b","b","a","a") >>> q=c("v1","v2","v1","v2","v1","v2") >>> r=c(5,2,4,8,9,7) >>> base=data.frame(p,q,r) >>> base >>> >>> p q r >>> 1 d v1 5 >>> 2 d v2 2 >>> 3 b v1 4 >>> 4 b v2 8 >>> 5 a v1 9 >>> 6 a v2 7 >>> >>> How programming R to get this result: >>> >>> v1 v2 >>> a 9 7 >>> b 4 8 >>> d 5 2 >>> >>> I tried the function table but the result is divided in several matrix: >>> table(base$p,base$q,base$r) >>> , , = 2 >>> >>> >>> v1 v2 >>> a 0 0 >>> b 0 0 >>> d 0 1 >>> >>> , , = 4 >>> >>> >>> v1 v2 >>> a 0 0 >>> b 1 0 >>> d 0 0 >>> >>> , , = 5 >>> >>> >>> v1 v2 >>> a 0 0 >>> b 0 0 >>> d 1 0 >>> >>> , , = 7 >>> >>> >>> v1 v2 >>> a 0 1 >>> b 0 0 >>> d 0 0 >>> >>> , , = 8 >>> >>> >>> v1 v2 >>> a 0 0 >>> b 0 1 >>> d 0 0 >>> >>> , , = 9 >>> >>> >>> v1 v2 >>> a 1 0 >>> b 0 0 >>> d 0 0 >>> >>> SIncerely yours >>> >>> >>> >>> -- >>> View this message in context: >>> http://r.789695.n4.nabble.com/How-to-built-a-pivot-table-of-value-tp4651539.html >>> Sent from the R help mailing list archive at Nabble.com. >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list >>> 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. >> >> ____________________________________________________________ >> GET FREE SMILEYS FOR YOUR IM & EMAIL - Learn more at >> http://www.inbox.com/smileys >> Works with AIM?, MSN? Messenger, Yahoo!? Messenger, ICQ?, Google Talk? >> and most webmails >> >> ______________________________________________ >> R-help at r-project.org mailing list >> 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.____________________________________________________________ GET FREE SMILEYS FOR YOUR IM & EMAIL - Learn more at http://www.inbox.com/smileys Works with AIM?, MSN? Messenger, Yahoo!? Messenger, ICQ?, Google Talk? and most webmails
HI,
You can also also ?reshape()
res<-reshape(base,v.names="r",idvar="p",timevar="q",direction="wide")
?res[order(res$p),]
A.K.
----- Original Message -----
From: CE.KA <ce.kaya75 at yahoo.fr>
To: r-help at r-project.org
Cc:
Sent: Saturday, December 1, 2012 7:37 AM
Subject: [R] How to built a pivot table of value
Hi R users
Imagine the table "base":
p=c("d","d","b","b","a","a")
q=c("v1","v2","v1","v2","v1","v2")
r=c(5,2,4,8,9,7)
base=data.frame(p,q,r)
base
? ? p? q? ? r
1? d? v1? 5
2? d? v2? 2
3? b? v1? 4
4? b? v2? 8
5? a? v1? 9
6? a? v2? 7
How programming R to get this result:
? ? ? ? ? ? v1? v2
a? ? ? ? ? 9? ? ? ? 7
b? ? ? ? 4? ? ? ? 8
d? ? ? ? 5? ? ? ? 2
I tried the function table but the result is divided in several matrix:
table(base$p,base$q,base$r)
, ,? = 2
?
? ? v1 v2
? a? 0? 0
? b? 0? 0
? d? 0? 1
, ,? = 4
?
? ? v1 v2
? a? 0? 0
? b? 1? 0
? d? 0? 0
, ,? = 5
?
? ? v1 v2
? a? 0? 0
? b? 0? 0
? d? 1? 0
, ,? = 7
?
? ? v1 v2
? a? 0? 1
? b? 0? 0
? d? 0? 0
, ,? = 8
?
? ? v1 v2
? a? 0? 0
? b? 0? 1
? d? 0? 0
, ,? = 9
?
? ? v1 v2
? a? 1? 0
? b? 0? 0
? d? 0? 0
SIncerely yours
--
View this message in context:
http://r.789695.n4.nabble.com/How-to-built-a-pivot-table-of-value-tp4651539.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
R-help at r-project.org mailing list
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.