Hi:

xtabs() also works in this case:

> dat <- read.table(textConnection('Subject   Item Score
+ "Subject 1" "Item 1"     1
+ "Subject 1" "Item 2"     0
+ "Subject 1" "Item 3"     1
+ "Subject 2" "Item 1"     1
+ "Subject 2" "Item 2"     1
+ "Subject 2" "Item 3"     0'), header=TRUE)
> closeAllConnections()
>
> acast(dat, Subject~Item)
Using Score as value column: use value_var to override.
          Item 1 Item 2 Item 3
Subject 1      1      0      1
Subject 2      1      1      0
> xtabs(Score ~ Subject + Item, data = dat)
           Item
Subject     Item 1 Item 2 Item 3
  Subject 1      1      0      1
  Subject 2      1      1      0
> df <- data.frame(Subject=
+                   c("Subject 1","Subject 1","Subject 1","Subject 1",
+                     "Subject 2","Subject 2","Subject 2","Subject 2"),
+                 Item   =
+                   c("Item 1","Item 2","Item 3","Item 4",
+                     "Item 1","Item 2","Item 3","Item 4"),
+                 Score  = c(1,0,1,1,1,1,0,0))
> xtabs(Score ~ Subject + Item, data = df)
           Item
Subject     Item 1 Item 2 Item 3 Item 4
  Subject 1      1      0      1      1
  Subject 2      1      1      0      0

HTH,
Dennis

On Mon, Nov 1, 2010 at 7:39 AM, Ajay Ohri <ohri2...@gmail.com> wrote:

> I get the following message when using the reshape2 package line
>
> > tDat.m<- melt(Dataset)
> Using Item, Subject as id variables
> > tDatCast<- acast(tDat.m,Subject~Item)
> Aggregation function missing: defaulting to length
>
>
> Note Problem Statement-
>
> convert dataframe
>
>
> Subject   Item Score
> 1 Subject 1 Item 1     1
> 2 Subject 1 Item 2     0
> 3 Subject 1 Item 3     1
> 4 Subject 2 Item 1     1
> 5 Subject 2 Item 2     1
> 6 Subject 2 Item 3     0
>
> to
>
>
>  Subject Item 1 Item 2 Item 3 Item 4
> 1 Subject 1      1      0      1      1
> 5 Subject 2      1      1      0      0
>
> Note- when I tried using the "wide" method the resultant vector went out of
> memory- its a dataset appox 100,000 lines
>
>
>
> Websites-
> http://decisionstats.com
> http://dudeofdata.com
>
>
> Linkedin- www.linkedin.com/in/ajayohri
>
>
>
>
> On Sat, Oct 30, 2010 at 5:41 PM, Rainer Hurling <rhur...@gwdg.de> wrote:
>
> > On 30.10.2010 13:50 (UTC+1), Santosh Srinivas wrote:
> >
> >> A more usable problem input would definitely help ... use dput to send a
> >> reproducible sample to the group
> >>
> >> Think the below should solve your problem
> >>
> >>  read.csv("Book1.csv")
> >>>
> >>     Subject   Item Score
> >> 1 Subject 1 Item 1     1
> >> 2 Subject 1 Item 2     0
> >> 3 Subject 1 Item 3     1
> >> 4 Subject 2 Item 1     1
> >> 5 Subject 2 Item 2     1
> >> 6 Subject 2 Item 3     0
> >>
> >>  library("reshape2")
> >>> tDat.m<- melt(tDat)
> >>>
> >>
> >>  tDatCast<- acast(tDat.m,Subject~Item)
> >>> tDatCast
> >>>
> >>           Item 1 Item 2 Item 3
> >> Subject 1      1      0      1
> >> Subject 2      1      1      0
> >>
> >
> >
> > # Or without using package reshape2, only function reshape from stats:
> >
> > df <- data.frame(Subject=
> >                   c("Subject 1","Subject 1","Subject 1","Subject 1",
> >                     "Subject 2","Subject 2","Subject 2","Subject 2"),
> >                 Item   =
> >                   c("Item 1","Item 2","Item 3","Item 4",
> >                     "Item 1","Item 2","Item 3","Item 4"),
> >                 Score  = c(1,0,1,1,1,1,0,0))
> >
> > df.wide <- reshape(df, idvar="Subject", timevar="Item", direction="wide")
> > names(df.wide) <- c("Subject",unique(as.character(df$Item)))
> >
> > df.wide
> >    Subject Item 1 Item 2 Item 3 Item 4
> > 1 Subject 1      1      0      1      1
> > 5 Subject 2      1      1      0      0
> >
> >
> >
> >  -----Original Message-----
> >> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org
> ]
> >> On
> >> Behalf Of Ajay Ohri
> >> Sent: 30 October 2010 16:27
> >> To: Rhelp
> >> Subject: [R] transforming a dataset for association analysis
> >>
> >> Hi
> >>
> >> I would like to transform  a data frame like
> >>
> >> Subject    Item   Score
> >> Subject 1 Item 1 1
> >> Subject 1 Item 2 0
> >> Subject 1 Item 3 1
> >> Subject 2 Item 1 1
> >> Subject 2 Item 2 1
> >> Subject 2 Item 3 0
> >> ....
> >> *to *
> >>
> >> Subject      Item1   Item2   Item3 .....Item N
> >> Subject1       1          0       1
> >> Subject2       1          1        0
> >> ........
> >> SubjectP..
> >>
> >> Apologize for the simple nature of my query but I am stuck. How can I do
> >> this transformation?
> >>
> >> Regards
> >>
> >> Ajay
> >>
> >>
> >>
> >> Websites-
> >> http://decisionstats.com
> >> http://dudeofdata.com
> >>
> >>
> >> Linkedin- www.linkedin.com/in/ajayohri
> >>
> >>
> >>
> >>
> >> On Sat, Oct 30, 2010 at 2:39 PM, Alaios<ala...@yahoo.com>  wrote:
> >>
> >>  Hello everyone.
> >>> I have written quite a big function that at the end correctly returns
> the
> >>> values
> >>> I want. I found a rare exception that I want to cover also. The easier
> >>> for
> >>> me
> >>> would be to write something like that
> >>>
> >>>
> >>> function(){
> >>>
> >>>  if (rare exception happened)
> >>>      return that value
> >>>
> >>>  # The comes the code for normal execution
> >>>  # ...
> >>>  # ...
> >>>  return value # Normal values to return
> >>>
> >>> }
> >>>
> >>>
> >>> Would that be feasible with R or two returns statements are not
> accepted?
> >>>
> >>> Regards
> >>> Alex
> >>>
> >>
>
>        [[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.
>

        [[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.

Reply via email to