Hi, In the example given, there is only one female and one male for ID "A". dat1<- read.table(text=" ID Gender Age Rate A Female 0-10 Good A Male 0-10 Good B Female 11-20 Bad B Male 11-20 Bad C Male >20 N/A ",sep="",header=TRUE,stringsAsFactors=FALSE,na.strings="N/A") res<- lapply(split(dat1[,-1],dat1$ID),function(x) lapply(seq_len(ncol(x)) ,function(i){x1<- as.data.frame(table(x[,i],useNA="always"));colnames(x1)[2]<- colnames(x)[i];x1}))
res[1] $A $A[[1]] Var1 Gender 1 Female 1 2 Male 1 3 <NA> 0 $A[[2]] Var1 Age 1 0-10 2 2 <NA> 0 $A[[3]] Var1 Rate 1 Good 2 2 <NA> 0 library(plyr) res1<- lapply(split(dat1[,-1],dat1$ID),function(x) join_all(lapply(seq_len(ncol(x)),function(i){x1<- as.data.frame(table(x[,i],useNA="always"));colnames(x1)[2]<- colnames(x)[i];x1}),type="full")) res1 $A # Var1 Gender Age Rate #1 Female 1 NA NA #2 Male 1 NA NA #3 <NA> 0 0 0 #4 0-10 NA 2 NA #5 Good NA NA 2 #$B # Var1 Gender Age Rate #1 Female 1 NA NA #2 Male 1 NA NA #3 <NA> 0 0 0 #4 11-20 NA 2 NA #5 Bad NA NA 2 #$C # Var1 Gender Age Rate #1 Male 1 NA NA #2 <NA> 0 0 1 #3 >20 NA 1 NA A.K. ________________________________ From: Ye Lin <ye...@lbl.gov> To: arun <smartpink...@yahoo.com> Cc: R help <r-help@r-project.org> Sent: Friday, April 19, 2013 1:25 PM Subject: Re: [R] count each answer category in each column Thanks A.K Is it possible to apply this to a more complicated situation , for example, I have an ID column for each row, say: ID Gender Age Rate A Female 0-10 Good A Male 0-10 Good B Female 11-20 Bad B Male 11-20 Bad C Male >20 N/A When return the results indicate how many answers are from each ID, say for gender, we have 2 female, and 1 from category A and 1 from category B??? Thanks. Ye On Thu, Apr 18, 2013 at 4:04 PM, arun <smartpink...@yahoo.com> wrote: Hi, >Try this: >Assuming that "table" is "data.frame" > > >dat1<-read.table(text=" > >Gender Age Rate >Female 0-10 Good >Male 0-10 Good >Female 11-20 Bad >Male 11-20 Bad >Male >20 N/A >",sep="",header=TRUE,stringsAsFactors=FALSE,na.strings="N/A") >lapply(seq_len(ncol(dat1)),function(i) >{x1<-as.data.frame(table(dat1[,i],useNA="always"));colnames(x1)[2]<-colnames(dat1)[i];x1}) >#[[1]] > # Var1 Gender >#1 Female 2 >#2 Male 3 >#3 <NA> 0 > >#[[2]] > # Var1 Age >#1 0-10 2 >#2 11-20 2 >#3 >20 1 >#4 <NA> 0 > >#[[3]] > # Var1 Rate >#1 Bad 2 >#2 Good 2 >#3 <NA> 1 >A.K. > > > > >----- Original Message ----- >From: Ye Lin <ye...@lbl.gov> >To: R help <r-help@r-project.org> >Cc: >Sent: Thursday, April 18, 2013 6:46 PM >Subject: [R] count each answer category in each column > >Hey, > >Is it possible that R can calculate each options under each column and >return a summary table? > >Suppose I have a table like this: > >Gender Age Rate >Female 0-10 Good >Male 0-10 Good >Female 11-20 Bad >Male 11-20 Bad >Male >20 N/A > >I want to have a summary table including the information that how many >answers in each category, sth like this: > > X Gender >Male 3 >Female 2 >N/A 0 > > X Age >0-10 2 >11-20 2 >>20 1 >N/A 0 > >X Rate >Good 2 >Bad 2 >N/A 1 > >So basically I want to calculate, in each column, how many people choose >each answer, including N/A. I know I can do it in Excel in a very >visualized way, but is there anyway to do it in R in a robust way if I have >a fairly large dataset. > >Thanks! > > [[alternative HTML version deleted]] > >______________________________________________ >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. > > ______________________________________________ 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.