Hello, I implemented two functions reshape_long and reshape_wide (see full working example below) to reshape data frames. I created several small examples and the two functions seemed to work properly. However, using the reshape_wide function on my real data sets (about 200.000 to 300.000 rows) failed. What happens is set all values for X, Y and Z were set to 1. The structure of my real data looks exactly the same as the small example below. After working on it for 2 days I think the problem is that the "primary key" (test_name, group_name and id) is only unique in the wide form. After applying the reshape_long function the primary key is not longer unique. I was wondering if anyone can tell me whether the step from d1 -> reshape_wide -> d2 can work at all because of the non uniqueness of d1.
library(reshape2) library(taRifx) reshape_long <- function(data, ids) { # Bring data into long form data_long <- melt(data, id.vars = ids, variable.name="Data_Points", value.name="value") data_long$value <- as.numeric(data_long$value) # Remove rows were analyte value is NA data_long <- data_long[!is.na(data_long$value), ] # Resort data formula_sort <- as.formula(paste("~", paste(ids, collapse="+"))) data_long <- sort(data_long, f = formula_sort) return(data_long) } reshape_wide <- function(data, ids) { # Bring data into wide form formula_wide <- as.formula(paste(paste(ids, collapse="+"), "~ Data_Points")) data_wide <- dcast(data, formula_wide) # Resort data formula_sort <- as.formula(paste("~", paste(ids, collapse="+"))) data_wide <- sort(data_wide, f = formula_sort) return(data_wide) } d <- data.frame( test_name = c(rep("Test_A", 6), rep("Test_B", 6)), group_name = c(rep("Group_C", 3), rep("Group_D", 3), rep("Group_C", 3), rep("Group_D", 3)), id = c("I1", "I2", "I3", "I4", "I5", "I6", "I1", "I2", "I3", "I7", "I8", "I9"), X = c(NA,NA,1,2,3,4,5,6,NA,7,8,9), Y = as.numeric(10:21), Z = c(NA,22,23,NA,24,NA,25,26,NA,27,28,29) ) d d1 <- reshape_long(d, ids=c("test_name", "group_name", "id")) d1 d2 <- reshape_wide(d1, ids=c("test_name", "group_name", "id")) d2 identical(d,d2) -- View this message in context: http://r.789695.n4.nabble.com/Reshape-data-frame-with-dcast-and-melt-tp4484332p4484332.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list 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.