Hi Jim, The data set is correct. I took two readings from the "SITE A" within a short time interval, therefore I want to take the first value if there are repeated within a same group of "timeGroup". Therefore I wanted following
FinalData1 B1 B2 id_X "A" "B" id_Y "A" "B" thanks, On Tue, May 1, 2018 at 4:05 PM, Jim Lemon <drjimle...@gmail.com> wrote: > Hi Marna, > I think this is due to having three rows for id_X and only two for > id_Y. The function creates a data frame with enough columns to hold > the greatest number of values for each ID variable. Notice that the > SITE_n columns contain three values for id_X (A, A, B) and two for > id_Y (A, B, NA) as there was no third occasion of measurement for the > latter. Even though there are only two _values_ for SITE, there must > be enough space for three. In your desired output, SITE for the second > occasion of measurement is wrong (it should be "A"), and for the third > occasion it is unknown. Even if there was only one value for SITE in > the original data frame, it should be repeated for the correct number > of observations. I think you may be mixing up case ID with location of > observation. > > Jim > > > On Wed, May 2, 2018 at 8:48 AM, Marna Wagley <marna.wag...@gmail.com> > wrote: > > Hi Jim, > > Thank you very much for your suggestions. I used it but it gave me three > > sites. But actually I do have only two sites "Id_X" and "Id_y" . In fact > > "A" is repeated two times for "Id_X". If it is repeated, I would like to > > take the first one among many repeated values. > > > > dat<-structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L), .Label = > c("id_X", > > > > "id_Y"), class = "factor"), EventDate = structure(c(4L, 5L, 2L, > > > > 3L, 1L), .Label = c("9/15/16", "9/15/17", "9/7/16", "9/8/16", > > > > "9/9/16"), class = "factor"), timeGroup = structure(c(1L, 1L, > > > > 2L, 1L, 2L), .Label = c("B1", "B2"), class = "factor"), SITE = > > structure(c(1L, > > > > 1L, 2L, 1L, 2L), .Label = c("A", "B"), class = "factor")), .Names = > c("ID", > > > > "EventDate", "timeGroup", "SITE"), class = "data.frame", row.names = > c(NA, > > > > -5L)) > > > > library(prettyR) > > > > stretch_df(dat,idvar="ID",to.stretch=c("EventDate","SITE")) > > > > > > ID timeGroup EventDate_1 EventDate_2 EventDate_3 SITE_1 SITE_2 SITE_3 > > 1 id_X B1 9/8/16 9/9/16 9/15/17 A A B > > 2 id_Y B1 9/7/16 9/15/16 <NA> A B <NA> > >> > > > > Basically I am looking for like following table > > > > ID timeGroup EventDate_1 EventDate_2 EventDate_3 SITE_1 SITE_2 > > 1 id_X B1 9/8/16 9/9/16 9/15/17 A B > > 2 id_Y B1 9/7/16 9/15/16 <NA> A B > > > > Thanks > > > > > > On Tue, May 1, 2018 at 3:32 PM, Jim Lemon <drjimle...@gmail.com> wrote: > >> > >> Hi Marna, > >> Try this: > >> > >> library(prettyR) > >> stretch_df(dat,idvar="ID",to.stretch=c("EventDate","SITE")) > >> > >> Jim > >> > >> > >> On Wed, May 2, 2018 at 8:24 AM, Marna Wagley <marna.wag...@gmail.com> > >> wrote: > >> > Hi R user, > >> > I was trying to convert a long matrix to wide? I have an example and > >> > would > >> > like to get a table (FinalData1): > >> > > >> > > >> > FinalData1 > >> > B1 B2 > >> > id_X "A" "B" > >> > id_Y "A" "B" > >> > > >> > but I got the following table using the following code. > >> > > >> > FinalData1 > >> > > >> > B1 B2 > >> > > >> > id_X "A" "A" > >> > > >> > id_Y "A" "B" > >> > > >> > > >> > the code and the example data I used are given below. Is there any > >> > suggestions to fix the problem? > >> > > >> > > >> > dat<-structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L), .Label = > >> > c("id_X", > >> > > >> > > >> > "id_Y"), class = "factor"), EventDate = structure(c(4L, 5L, 2L, > >> > > >> > 3L, 1L), .Label = c("9/15/16", "9/15/17", "9/7/16", "9/8/16", > >> > > >> > "9/9/16"), class = "factor"), timeGroup = structure(c(1L, 1L, > >> > > >> > 2L, 1L, 2L), .Label = c("B1", "B2"), class = "factor"), SITE = > >> > structure(c( > >> > 1L, > >> > > >> > 1L, 2L, 1L, 2L), .Label = c("A", "B"), class = "factor")), .Names = > >> > c("ID", > >> > > >> > "EventDate", "timeGroup", "SITE"), class = "data.frame", row.names = > >> > c(NA, > >> > > >> > -5L)) > >> > > >> > > >> > tmp <- split(dat, dat$ID) > >> > > >> > tmp1 <- do.call(rbind, lapply(tmp, function(dat){ > >> > > >> > tb <- table(dat$timeGroup) > >> > > >> > idx <- which(tb>0) > >> > > >> > tb1 <- replace(tb, idx, as.character(dat$SITE)) > >> > > >> > })) > >> > > >> > > >> > tmp1 > >> > > >> > FinalData<-print(tmp1, quote=FALSE) > >> > > >> > [[alternative HTML version deleted]] > >> > > >> > ______________________________________________ > >> > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> > 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 -- To UNSUBSCRIBE and more, see 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.