Hi Marna, This is a condition that the function cannot handle. It would be possible to reformat the result based on the time intervals, but the stretch_df function doesn't try to interpret the values, just stretches them out to a wide format.
Jim On Wed, May 2, 2018 at 9:16 AM, Marna Wagley <marna.wag...@gmail.com> wrote: > 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. >> > >> > > > ______________________________________________ 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.