Hi Kristi, I'm only guessing here, but if I change the order of the levels of "site", it comes out the way you want. I don't think that this is a solution, but let me know if it helps.
A<-structure(list(Tag = structure(c(1L, 1L, 1L), .Label = "a1", class = "factor"), site = structure(1:3, .Label = c("2C7", "ENM", "ENL"), 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 Jim On Wed, Oct 14, 2015 at 3:17 AM, Kristi Glover <kristi.glo...@hotmail.com> wrote: > Hi Jim, > > Thank you very much for the message. Sorry for the email that was not > clear. Yes, you are right, in A$date, should be t2> ENM, t3> ENL. but using > the code it gave t2>ENL, t3>ENM. I am struggling to fix it. If the data set > was small, I could do it manually. > > > would you mind to try this example? > > > 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 13, 2015 4:24 AM > *To:* Kristi Glover > *Cc:* R-help > *Subject:* Re: [R] 3D matrix columns messed up _ looking for your help > > 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.