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 1N/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]]
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 <yelin at lbl.gov>
To: R help <r-help at 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 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.
On Apr 18, 2013, at 3:46 PM, Ye Lin wrote:> 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:Some of the tables simple did not have N/A so it's not appropriate to append an N/A row for them: 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) sapply(lapply(dat1, table), as.matrix) $Gender [,1] Female 2 Male 3 $Age [,1]>20 10-10 2 11-20 2 $Rate [,1] Bad 2 Good 2 N/A 1> > 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.You appear confused about the relative robustness of R and Excel. -- David Winsemius Alameda, CA, USA
On 04/19/2013 08:46 AM, Ye Lin wrote:> 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. >Hey Ye, How about this? yldat<-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",header=TRUE) require(prettyR) describe(yldat) Jim
If the format is not a problem, you could also use:
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)
res<-summary(dat1)
res
?# ? Gender???? Age????? Rate?
?#Female:2?? 0-10 :2?? Bad :2?
# Male? :3?? 11-20:2?? Good:2?
?# ????????? >20? :1?? N/A :1?
library(stringr)
library(plyr)
res1<-mutate(data.frame(Categ=rep(c("Gender","Age","Rate"),c(2,3,3)),na.omit(str_split_fixed(str_trim(str_replace(res,":","
"))," ",2)),stringsAsFactors=FALSE),X2=as.numeric(X2))
?res1
#?? Categ???? X1 X2
#1 Gender Female? 2
#2 Gender?? Male? 3
#3??? Age?? 0-10? 2
#4??? Age? 11-20? 2
#5??? Age??? >20? 1
#6?? Rate??? Bad? 2
#7?? Rate?? Good? 2
#8?? Rate??? N/A? 1
A.K.
----- Original Message -----
From: arun <smartpink111 at yahoo.com>
To: Ye Lin <yelin at lbl.gov>
Cc: R help <r-help at r-project.org>
Sent: Thursday, April 18, 2013 7:04 PM
Subject: Re: [R] count each answer category in each column
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 <yelin at lbl.gov>
To: R help <r-help at 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 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.
Hi,
Try this:
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")
library(plyr)
library(reshape2)
?lst1<-lapply(list(c(3,4),c(2,4),c(2,3)),function(i)
mutate(dcast(melt(dat1[,-i],id.var="ID"),value~ID,length),var=rowSums(cbind(A,B,C))))
?lst2<-lapply(seq_along(colnames(dat1)[-1]),function(i) {x1<-lst1[[i]];
colnames(x1)[5]<- colnames(dat1)[i+1];
colnames(x1)[1]<-"Var1";x1[,c(1,5,2:4)]})
names(lst2)<- colnames(dat1)[-1]
?lst2
#$Gender
?# ? Var1 Gender A B C
#1 Female????? 2 1 1 0
#2?? Male????? 3 1 1 1
#$Age
?#? Var1 Age A B C
#1? 0-10?? 2 2 0 0
#2 11-20?? 2 0 2 0
#3?? >20?? 1 0 0 1
#$Rate
?# Var1 Rate A B C
#1? Bad??? 2 0 2 0
#2 Good??? 2 2 0 0
#3 <NA>??? 1 0 0 1
A.K.
________________________________
From: Ye Lin <yelin at lbl.gov>
To: arun <smartpink111 at yahoo.com>
Sent: Friday, April 19, 2013 1:44 PM
Subject: Re: [R] count each answer category in each column
Yes, but I am wondering if I can calculate how many kinds of answers and how
many under each category together, then maybe results can be sth like :
$Gender
Var1 ? ? ?? Gender? A??? B???? C
Male ? ? ? 3??????? ?? 1??? 1????? 1
Female ? ?2?????? ?? 1???? 1????? 0
N/A ? ? ? ?0?????????? 0???? 0???? 0
Thanks!
Ye
On Fri, Apr 19, 2013 at 10:36 AM, arun <smartpink111 at yahoo.com> wrote:
Hi Ye,>Just a doubt:
>In the example given , for ID "A", you have 1 female and 1 male.
>
>Do you want to categorize the same thing for each ID?
>For example:
>A:
>Var1 Gender
>Female 1
>Male 1
>NA? 0
>
>Var1 Age
>0-10 2
>?
>Var1 Rate
>Good 2
>
>B:
>....................
>A.K.
>
>
>
>
>________________________________
>?From: Ye Lin <yelin at lbl.gov>
>To: arun <smartpink111 at yahoo.com>
>Cc: R help <r-help at 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 <smartpink111 at 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 <yelin at lbl.gov>
>>To: R help <r-help at 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 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.
>>
>>
>
Hi,
Try this:
dat1<-
read.csv("Ye.csv",header=TRUE,stringsAsFactors=FALSE,sep=",",na.strings="N/A")
library(plyr)
library(reshape2)
lst1<-lapply(seq(2,ncol(dat1)),function(i) {x1<-
cbind(ID=dat1[,1],dat1[i]);x2<-mutate(dcast(melt(x1,id.var="ID"),value~ID,length),var=rowSums(cbind(A,B,C,D,E)));colnames(x2)[7]<-
colnames(x1)[2];x2[,c(1,7,2:6)]})
?names(lst1)<- colnames(dat1)[-1]
?lst1[1]
#$Size
#? value Size A B C D E
#1???? 1??? 3 1 1 1 0 0
#2???? 2??? 3 1 1 1 0 0
#3???? 3??? 4 1 1 0 1 1
#4???? 4??? 5 1 0 1 2 1
#5???? 5??? 5 0 1 1 2 1
#6???? 6??? 2 0 0 0 1 1
#or #with more IDs
lst2<- lapply(seq(2,ncol(dat1)),function(i) {x1<-
cbind(ID=dat1[,1],dat1[i]);x2<-dcast(melt(x1,id.var="ID"),value~ID,length);
x3<-mutate(x2,var=rowSums(cbind(x2[!grepl("value",names(x2))])));colnames(x3)[7]<-
colnames(x1)[2];x3[,c(1,7,2:6)]})
names(lst2)<- colnames(dat1)[-1]
identical(lst1,lst2)
#[1] TRUE
?
A.K.
________________________________
From: Ye Lin <yelin at lbl.gov>
To: arun <smartpink111 at yahoo.com>
Sent: Friday, April 19, 2013 5:49 PM
Subject: Re: [R] count each answer category in each column
Hey A.K
I modified the scripts but it didnt work. Here is my scripts:
lst1<-lapply(list(c(3:25),c(2,4:25),c(2:3,5:25),c(2:4,6:25),c(2:5,7:25),(2:6,8:25),c(2:7,9:25),c(2:8,10:25),c(2:9,11:25),c(2:10,12:25),c(2:11,13:25),c(2:12,14:25),c(2:13,15:25),c(2:14,16:25),c(2:15,17:25),c(2:16,18:25),c(2:17,19:25),c(2:18,20:25),c(2:19,21:25),c(2:20,22:25),c(2:21,23:25),c(2:22,24,25),c(2:23,25),c(2:24)),function(i)
mutate(dcast(melt(dat1[,-i],id.var="ID"),value~ID,length),var=rowSums(cbind(A,B,C,D,E))))
ERROR:<text>
lst2<-lapply(seq_along(colnames(dat1)[-1]),function(i) {x1<-lst1[[i]];
colnames(x1)[7]<- colnames(dat1)[i+1];
colnames(x1)[1]<-"Var1";x1[,c(1,7,2:6)]})
names(lst2)<- colnames(dat1)[-1]
I have attached a sample with the same size of my data. I have 25 cols.
Could you help me take a look? Thanks so much!
Ye
On Fri, Apr 19, 2013 at 2:03 PM, arun <smartpink111 at yahoo.com> wrote:
Hi Ye,>
>The numbers were based on the column numbers for data.? I used that to order
in the way you asked the output.
>For example:
>?dat1[,-c(3,4)]
>#? ID Gender
>#1? A Female
>#2? A?? Male
>#3? B Female
>#4? B?? Male
>#5? C?? Male
>
>
>dat1[,-c(2,4)]
>? ID?? Age
>1? A? 0-10
>2? A? 0-10
>3? B 11-20
>4? B 11-20
>5? C?? >20
>
>
>In your larger dataframe, it depends on how many columns you have.? I was
doing this just for demonstration.?
>
>colnames(x1)[5] was the last column for x1.? Its name I wanted to change it
so that you can get "Gender", "Age", etc.
>
>x1[,c(1,5,2:4)] is rearranging the columns to make sure that it matches the
output order of columns you wanted.
>
>If you find it difficult to process this into your actual data, you can send
me the dataset or a dataset that matches the original dataset.
>
>A.K.
>
>
>
>________________________________
>?From: Ye Lin <yelin at lbl.gov>
>To: arun <smartpink111 at yahoo.com>
>Sent: Friday, April 19, 2013 4:40 PM
>
>Subject: Re: [R] count each answer category in each column
>
>
>
>Hey A.K,
>
>
>When I apply this to a larger data frame, I assume I should adjust these
numbers highlighted below:
>
>?lst1<-lapply(list(c(3,4),c(2,4),c(2,3)),function(i)
mutate(dcast(melt(dat1[,-i],id.var="ID"),value~ID,length),var=rowSums(cbind(A,B,C))))
>
>?lst2<-lapply(seq_along(colnames(dat1)[-1]),function(i)
{x1<-lst1[[i]]; colnames(x1)[5]<- colnames(dat1)[i+1];
colnames(x1)[1]<-"Var1";x1[,c(1,5,2:4)]})
>
>
>Could you give me a little more instruction here on the first command for
lst1, what is this list used for? e.g my data frame have m cols and n rows, and
the first column is still the ID column.
>
>Sorry that I am confused by the long scripts.
>
>
>Thanks for your help!
>
>
>Ye
>
>
>
>
>
>On Fri, Apr 19, 2013 at 12:30 PM, arun <smartpink111 at yahoo.com>
wrote:
>
>Hi,
>>Try this:
>>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")
>>library(plyr)
>>library(reshape2)
>>
>>?lst1<-lapply(list(c(3,4),c(2,4),c(2,3)),function(i)
mutate(dcast(melt(dat1[,-i],id.var="ID"),value~ID,length),var=rowSums(cbind(A,B,C))))
>>?lst2<-lapply(seq_along(colnames(dat1)[-1]),function(i)
{x1<-lst1[[i]]; colnames(x1)[5]<- colnames(dat1)[i+1];
colnames(x1)[1]<-"Var1";x1[,c(1,5,2:4)]})
>>names(lst2)<- colnames(dat1)[-1]
>>?lst2
>>#$Gender
>>?# ? Var1 Gender A B C
>>#1 Female????? 2 1 1 0
>>#2?? Male????? 3 1 1 1
>>
>>#$Age
>>?#? Var1 Age A B C
>>#1? 0-10?? 2 2 0 0
>>#2 11-20?? 2 0 2 0
>>#3?? >20?? 1 0 0 1
>>
>>#$Rate
>>?# Var1 Rate A B C
>>#1? Bad??? 2 0 2 0
>>#2 Good??? 2 2 0 0
>>#3 <NA>??? 1 0 0 1
>>
>>A.K.
>>
>>
>>
>>________________________________
>>?From: Ye Lin <yelin at lbl.gov>
>>To: arun <smartpink111 at yahoo.com>
>>Sent: Friday, April 19, 2013 1:44 PM
>>
>>Subject: Re: [R] count each answer category in each column
>>
>>
>>
>>Yes, but I am wondering if I can calculate how many kinds of answers and
how many under each category together, then maybe results can be sth like :
>>
>>
>>$Gender
>>
>>
>>Var1 ? ? ?? Gender? A??? B???? C
>>
>>Male ? ? ? 3??????? ?? 1??? 1????? 1
>>
>>Female ? ?2?????? ?? 1???? 1????? 0
>>
>>N/A ? ? ? ?0?????????? 0???? 0???? 0
>>
>>
>>Thanks!
>>
>>
>>Ye
>>
>>
>>
>>
>>On Fri, Apr 19, 2013 at 10:36 AM, arun <smartpink111 at yahoo.com>
wrote:
>>
>>Hi Ye,
>>>Just a doubt:
>>>In the example given , for ID "A", you have 1 female and 1
male.
>>>
>>>Do you want to categorize the same thing for each ID?
>>>For example:
>>>A:
>>>Var1 Gender
>>>Female 1
>>>Male 1
>>>NA? 0
>>>
>>>Var1 Age
>>>0-10 2
>>>?
>>>Var1 Rate
>>>Good 2
>>>
>>>B:
>>>....................
>>>A.K.
>>>
>>>
>>>
>>>
>>>________________________________
>>>?From: Ye Lin <yelin at lbl.gov>
>>>To: arun <smartpink111 at yahoo.com>
>>>Cc: R help <r-help at 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 <smartpink111 at
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 <yelin at lbl.gov>
>>>>To: R help <r-help at 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 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.
>>>>
>>>>
>>>
>>
>