Hi Kristi, This is a bit hard to follow, but I'll try. As you are replacing the numeric values of the intermediate table with the character values of the factor A$date, it looks to me as though the answer is as it should be. 2 -> ENL, 3 -> ENM. I suspect that the solution is not difficult, but I can't quite make out what you are trying to accomplish.
Jim On Tue, Oct 13, 2015 at 11:44 AM, Kristi Glover <kristi.glo...@hotmail.com> wrote: > Hi Jim, > > Thank you very much for your suggestions. It seems very easy but it is > frustrating as it did not work me. with creating factors and rearranging > the columns, still z value (site) did change. > > for example > > Tag site DATE > a1 2C7 t1 > a1 ENL t3 > a1 ENM t2 > > ENL is supposed to be assigned for the period t3. ENM should be assigned > in t2, but using the code, the table gave wrong information as the z value > (site) did not move to the corresponding column. ENL is in t2, ENM is inn > t3 coumns, which is wrong. > > > tmp1 > t1 t2 t3 > a1 "2C7" "ENL" "ENM" > > I have included the code if any one help me to solve the problem. This is > a just example, I have a very big data set so that I could not check > it manually therefore, I just checked few rows but it did not work. Your > help is highly appreciated. > > > Here is the example > > A<-structure(list(Tag = structure(c(1L, 1L, 1L), .Label = "a1", class = > "factor"), > site = structure(1:3, .Label = c("2C7", "ENL", "ENM"), class = > "factor"), > DATE = structure(c(1L, 3L, 2L), .Label = c("t1", "t2", "t3" > ), class = "factor"), date = structure(c(1L, 3L, 2L), .Label = c("t1", > "t2", "t3"), class = "factor")), .Names = c("Tag", "site", > "DATE", "date"), row.names = c(NA, -3L), class = "data.frame") > > A$date<-factor(A$DATE, levels=c("t1","t2","t3")) > tmp <- split(A, A$Tag) > head(tmp) > tail(tmp) > tmp1 <- do.call(rbind, lapply(tmp, function(x){ > tb <- table(A$date) > idx <- which(tb>0) > tb1 <- replace(tb, idx, as.character(A$site)) > })) > > tmp1 > > > > > > ------------------------------ > *From:* Jim Lemon <drjimle...@gmail.com> > *Sent:* October 12, 2015 4:22 AM > *To:* Kristi Glover > *Cc:* R-help > *Subject:* Re: [R] 3D matrix columns messed up > > Hi Kristi, > The first part is relatively easy: > > # change first line to > x$time<-factor(x$time,levels=c("t1","t2","t3","t4","t10","t21")) > > As you have specified "site" as the second element in "x", not the third, > perhaps you just want: > > x<-structure(list(vs = structure(c(1L, 1L, 2L, 3L, 4L, 2L, 3L, 1L, 1L), > .Label = c("vs1", "vs2", "vs3", "vs4"), class = "factor"), > time = structure(c(1L, 3L, 5L, 1L, 5L, 1L, 6L, 2L, 4L), > .Label = c("t1", "t10", "t2", "t21", "t3", "t4"), class = "factor")), > site = structure(c(1L, 2L, 3L, 1L, 3L, 1L, 3L, 1L, 2L), > .Label = c("A", "B", "D"), class = "factor"), > .Names = c("vs", "time", "site"), class = "data.frame", > row.names = c(NA, -9L)) > > Jim > > On Mon, Oct 12, 2015 at 7:41 PM, Kristi Glover <kristi.glo...@hotmail.com> > wrote: > >> Hi R Users, >> I was trying to make a matrix with three variables (x,y, z), but y >> variable (columns) names did not stay in its sequential order, >> t1,t2,t3,---t21; rather the matrix columns automatically appeared as >> a t1,t10, t2,t20 etc. Besides these, z value (sites) did not come in the >> right place (meaning in right columns name). I am wondering how I can make >> the matrix with the sequential order with right z value (site). I tried it >> several ways but did not work. One of the examples I used is given here. >> Would you mind to give me a mints? >> >> x<-structure(list(vs = structure(c(1L, 1L, 2L, 3L, 4L, 2L, 3L, 1L, >> 1L), .Label = c("vs1", "vs2", "vs3", "vs4"), class = "factor"), >> site = structure(c(1L, 2L, 3L, 1L, 3L, 1L, 3L, 1L, 2L), .Label = >> c("A", >> "B", "D"), class = "factor"), time = structure(c(1L, 3L, >> 5L, 1L, 5L, 1L, 6L, 2L, 4L), .Label = c("t1", "t10", "t2", >> "t21", "t3", "t4"), class = "factor")), .Names = c("vs", >> "site", "time"), class = "data.frame", row.names = c(NA, -9L)) >> >> >> x$time<-factor(x$time) >> tmp <- split(x, x$vs) >> tmp1 <- do.call(rbind, lapply(tmp, function(x){ >> tb <- table(x$time) >> idx <- which(tb>0) >> tb1 <- replace(tb, idx, as.character(x$site)) >> })) >> >> >> tmp1 >> >> >> ## I want the z (site) in respective columns. >> >> ______________________________________________ >> 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.