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 <[email protected]> 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 <[email protected]> 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: [email protected] [mailto:[email protected]
> ]
> >> 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<[email protected]> 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]]
>
> ______________________________________________
> [email protected] 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]]
______________________________________________
[email protected] 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.