Hi Deepayan, Thank you very much!! Yes, your method also works very well, I thought about creating an extra time variable, but did not know how to do it.
Ding ________________________________________ From: Deepayan Sarkar [deepayan.sar...@gmail.com] Sent: Saturday, April 4, 2020 3:10 AM To: Yuan Chun Ding Cc: r-help mailing list Subject: Re: [R] a simple reshape Hi, [For a non-tidyverse solution:] Your problem is ambiguous without a 'time' variable; e.g., why should the answer not be test2 <- data.frame(vntr1=c("v1","v2"), a1 =c(NA, 0.5693), a2 = c(0.02, 0.12), a3 =c(NA, 0.11), a4=c(0.98, 0.04)) ? If you do add an artificial time variable, say using test1 <- transform(test1, time = unsplit(lapply(split(vntr1, vntr1), seq_along), vntr1)) to give > test1 vntr1 val time 1 v1 0.98 1 2 v1 0.02 2 3 v2 0.59 1 4 v2 0.12 2 5 v2 0.11 3 6 v2 0.04 4 then either reshape() or dcast() easily gives you what you want: > reshape(test1, v.names = "val", idvar = "vntr1", direction = "wide", timevar > = "time") vntr1 val.1 val.2 val.3 val.4 1 v1 0.98 0.02 NA NA 3 v2 0.59 0.12 0.11 0.04 > reshape2::dcast(test1, vntr1 ~ time, value.var="val") vntr1 1 2 3 4 1 v1 0.98 0.02 NA NA 2 v2 0.59 0.12 0.11 0.04 -Deepayan On Sat, Apr 4, 2020 at 12:28 AM Yuan Chun Ding <ycd...@coh.org> wrote: > > Hi R users, > > I want to do a data reshape from long to wide, I thought it was easy using > tidyverse spread function, but it did not work well. Can you help me? > > Thank you, > > Ding > > test1 data frame is long file and test2 is the wide file I want to get > > test1 <- data.frame (vntr1=c("v1","v1", "v2","v2","v2","v2"), > val =c(0.98,0.02, 0.59,0.12,0.11,0.04)) > > test2 <- data.frame(vntr1=c("v1","v2"), > a1 =c(0.98, 0.5693), > a2 = c(0.02, 0.12), > a3 =c(NA, 0.11), > a4=c(NA, 0.04)) > > the following code does not work > test2 <-test1 %>%spread(vntr1, val) > > Error: Each row of output must be identified by a unique combination of keys. > Keys are shared for 6 rows: > * 1, 2 > * 3, 4, 5, 6 > Do you need to create unique ID with tibble::rowid_to_column()? > Call `rlang::last_error()` to see a backtrace > > ---------------------------------------------------------------------- > ------------------------------------------------------------ > -SECURITY/CONFIDENTIALITY WARNING- > > This message and any attachments are intended solely for the individual or > entity to which they are addressed. This communication may contain > information that is privileged, confidential, or exempt from disclosure under > applicable law (e.g., personal health information, research data, financial > information). Because this e-mail has been sent without encryption, > individuals other than the intended recipient may be able to view the > information, forward it to others or tamper with the information without the > knowledge or consent of the sender. If you are not the intended recipient, or > the employee or person responsible for delivering the message to the intended > recipient, any dissemination, distribution or copying of the communication is > strictly prohibited. If you received the communication in error, please > notify the sender immediately by replying to this message and deleting the > message and any accompanying files from your system. If, due to the security > risks, you do not wish to receive further communications via e-mail, please > reply to this message and inform the sender that you do not wish to receive > further e-mail from the sender. (LCP301) > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!_gFkJ_Cf4ZEMwLhfpOwr3W8LB2SUv3_s6vPFDW1_kVUN891RfsB4KvcZNHBM$ > PLEASE do read the posting guide > https://urldefense.com/v3/__http://www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!_gFkJ_Cf4ZEMwLhfpOwr3W8LB2SUv3_s6vPFDW1_kVUN891RfsB4KkMsIU01$ > 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.