An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20081218/92a2b071/attachment.pl>
inserting zero instances with zeroes in a matrix
7 messages · Henrique Dallazuanna, Gabor Grothendieck, Simon Pickett
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20081218/456c470f/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20081218/487a092b/attachment.pl>
Try this: as.data.frame(xtabs(count ~., d.f))
On Thu, Dec 18, 2008 at 6:25 AM, Henrique Dallazuanna <wwwhsd at gmail.com> wrote:
Try this:
with(d.f,
{merge(data.frame(house = rep(unique(house), each =
length(unique(pet))),
pet = unique(pet)), d.f, by = c("house", "pet"), all = TRUE)
}
)
On Thu, Dec 18, 2008 at 8:58 AM, Simon Pickett <simon.pickett at bto.org>wrote:
Hi all,
Suppose I had the below example where a survey was carried out recording
the number of each type of pet in each house
count<-c(2,1,2,1,2,3,4)
house<-c("house1","house1","house2","house3","house4","house4","house4")
pet<-c("dogs","cats","dogs","dogs","budgie","cat","hamster")
d.f<-data.frame(house,pet,count)
How would I acheive a dataframe that had every instance of house in column
1, all possible pets in column 2 and counts in column 3 like this...
newhouse<-rep(unique(house),1,each=4)
newpets<-rep(unique(pet),4)
newcount<-c(2,1,0,0,2,0,0,0,1,0,0,0,0,3,2,4)
newdf<-data.frame(newhouse,newpets,newcount)
Is there a way of doing this without creating a new matrix and using
programming loops?
Thanks in advance, Simon.
[[alternative HTML version deleted]]
______________________________________________ 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.
--
Henrique Dallazuanna
Curitiba-Paran?-Brasil
25? 25' 40" S 49? 16' 22" O
[[alternative HTML version deleted]]
______________________________________________ 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.
Thanks Gregor and Henrique for the eloquent and masterful replies, These solutions have saved me hours (maybe even days) of work in the future, I am very grateful. :-) Simon. ----- Original Message ----- From: "Gabor Grothendieck" <ggrothendieck at gmail.com> To: "Henrique Dallazuanna" <wwwhsd at gmail.com> Cc: "Simon Pickett" <simon.pickett at bto.org>; <r-help at r-project.org> Sent: Thursday, December 18, 2008 11:51 AM Subject: Re: [R] inserting zero instances with zeroes in a matrix
Try this: as.data.frame(xtabs(count ~., d.f)) On Thu, Dec 18, 2008 at 6:25 AM, Henrique Dallazuanna <wwwhsd at gmail.com> wrote:
Try this:
with(d.f,
{merge(data.frame(house = rep(unique(house), each =
length(unique(pet))),
pet = unique(pet)), d.f, by = c("house", "pet"), all = TRUE)
}
)
On Thu, Dec 18, 2008 at 8:58 AM, Simon Pickett
<simon.pickett at bto.org>wrote:
Hi all,
Suppose I had the below example where a survey was carried out recording
the number of each type of pet in each house
count<-c(2,1,2,1,2,3,4)
house<-c("house1","house1","house2","house3","house4","house4","house4")
pet<-c("dogs","cats","dogs","dogs","budgie","cat","hamster")
d.f<-data.frame(house,pet,count)
How would I acheive a dataframe that had every instance of house in
column
1, all possible pets in column 2 and counts in column 3 like this...
newhouse<-rep(unique(house),1,each=4)
newpets<-rep(unique(pet),4)
newcount<-c(2,1,0,0,2,0,0,0,1,0,0,0,0,3,2,4)
newdf<-data.frame(newhouse,newpets,newcount)
Is there a way of doing this without creating a new matrix and using
programming loops?
Thanks in advance, Simon.
[[alternative HTML version deleted]]
______________________________________________ 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.
--
Henrique Dallazuanna
Curitiba-Paran?-Brasil
25? 25' 40" S 49? 16' 22" O
[[alternative HTML version deleted]]
______________________________________________ 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.
Actually, Both these solutions create contingency tables, with frequency rather than the original count values. Is there a way to retain the original count values? Thanks again, Simon. ----- Original Message ----- From: "Simon Pickett" <simon.pickett at bto.org> To: "Gabor Grothendieck" <ggrothendieck at gmail.com>; "Henrique Dallazuanna" <wwwhsd at gmail.com> Cc: <r-help at r-project.org> Sent: Thursday, December 18, 2008 12:11 PM Subject: Re: [R] inserting zero instances with zeroes in a matrix
Thanks Gregor and Henrique for the eloquent and masterful replies, These solutions have saved me hours (maybe even days) of work in the future, I am very grateful. :-) Simon. ----- Original Message ----- From: "Gabor Grothendieck" <ggrothendieck at gmail.com> To: "Henrique Dallazuanna" <wwwhsd at gmail.com> Cc: "Simon Pickett" <simon.pickett at bto.org>; <r-help at r-project.org> Sent: Thursday, December 18, 2008 11:51 AM Subject: Re: [R] inserting zero instances with zeroes in a matrix
Try this: as.data.frame(xtabs(count ~., d.f)) On Thu, Dec 18, 2008 at 6:25 AM, Henrique Dallazuanna <wwwhsd at gmail.com> wrote:
Try this:
with(d.f,
{merge(data.frame(house = rep(unique(house), each =
length(unique(pet))),
pet = unique(pet)), d.f, by = c("house", "pet"), all = TRUE)
}
)
On Thu, Dec 18, 2008 at 8:58 AM, Simon Pickett
<simon.pickett at bto.org>wrote:
Hi all,
Suppose I had the below example where a survey was carried out
recording
the number of each type of pet in each house
count<-c(2,1,2,1,2,3,4)
house<-c("house1","house1","house2","house3","house4","house4","house4")
pet<-c("dogs","cats","dogs","dogs","budgie","cat","hamster")
d.f<-data.frame(house,pet,count)
How would I acheive a dataframe that had every instance of house in
column
1, all possible pets in column 2 and counts in column 3 like this...
newhouse<-rep(unique(house),1,each=4)
newpets<-rep(unique(pet),4)
newcount<-c(2,1,0,0,2,0,0,0,1,0,0,0,0,3,2,4)
newdf<-data.frame(newhouse,newpets,newcount)
Is there a way of doing this without creating a new matrix and using
programming loops?
Thanks in advance, Simon.
[[alternative HTML version deleted]]
______________________________________________ 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.
--
Henrique Dallazuanna
Curitiba-Paran?-Brasil
25? 25' 40" S 49? 16' 22" O
[[alternative HTML version deleted]]
______________________________________________ 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.
______________________________________________ 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.
It does retain the original count values. Its only the column name that has changed. To change that you can use: as.data.frame(xtabs(count ~., d.f), responseName = "count")
# compare d.f[order(d.f$house, d.f$pet), ]
house pet count 2 house1 cats 1 1 house1 dogs 2 3 house2 dogs 2 4 house3 dogs 1 5 house4 budgie 2 6 house4 cat 3 7 house4 hamster 4
DF <- subset(as.data.frame(xtabs(count ~., d.f), responseName = "count"), count > 0) DF[order(DF$house, DF$pet), ]
house pet count 9 house1 cats 1 13 house1 dogs 2 14 house2 dogs 2 15 house3 dogs 1 4 house4 budgie 2 8 house4 cat 3 20 house4 hamster 4
On Thu, Dec 18, 2008 at 9:46 AM, Simon Pickett <simon.pickett at bto.org> wrote:
Actually, Both these solutions create contingency tables, with frequency rather than the original count values. Is there a way to retain the original count values? Thanks again, Simon. ----- Original Message ----- From: "Simon Pickett" <simon.pickett at bto.org> To: "Gabor Grothendieck" <ggrothendieck at gmail.com>; "Henrique Dallazuanna" <wwwhsd at gmail.com> Cc: <r-help at r-project.org> Sent: Thursday, December 18, 2008 12:11 PM Subject: Re: [R] inserting zero instances with zeroes in a matrix
Thanks Gregor and Henrique for the eloquent and masterful replies, These solutions have saved me hours (maybe even days) of work in the future, I am very grateful. :-) Simon. ----- Original Message ----- From: "Gabor Grothendieck" <ggrothendieck at gmail.com> To: "Henrique Dallazuanna" <wwwhsd at gmail.com> Cc: "Simon Pickett" <simon.pickett at bto.org>; <r-help at r-project.org> Sent: Thursday, December 18, 2008 11:51 AM Subject: Re: [R] inserting zero instances with zeroes in a matrix
Try this: as.data.frame(xtabs(count ~., d.f)) On Thu, Dec 18, 2008 at 6:25 AM, Henrique Dallazuanna <wwwhsd at gmail.com> wrote:
Try this:
with(d.f,
{merge(data.frame(house = rep(unique(house), each =
length(unique(pet))),
pet = unique(pet)), d.f, by = c("house", "pet"), all = TRUE)
}
)
On Thu, Dec 18, 2008 at 8:58 AM, Simon Pickett
<simon.pickett at bto.org>wrote:
Hi all,
Suppose I had the below example where a survey was carried out
recording
the number of each type of pet in each house
count<-c(2,1,2,1,2,3,4)
house<-c("house1","house1","house2","house3","house4","house4","house4")
pet<-c("dogs","cats","dogs","dogs","budgie","cat","hamster")
d.f<-data.frame(house,pet,count)
How would I acheive a dataframe that had every instance of house in
column
1, all possible pets in column 2 and counts in column 3 like this...
newhouse<-rep(unique(house),1,each=4)
newpets<-rep(unique(pet),4)
newcount<-c(2,1,0,0,2,0,0,0,1,0,0,0,0,3,2,4)
newdf<-data.frame(newhouse,newpets,newcount)
Is there a way of doing this without creating a new matrix and using
programming loops?
Thanks in advance, Simon.
[[alternative HTML version deleted]]
______________________________________________ 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.
--
Henrique Dallazuanna
Curitiba-Paran?-Brasil
25? 25' 40" S 49? 16' 22" O
[[alternative HTML version deleted]]
______________________________________________ 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.
______________________________________________ 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.