Ich arbeite mit Bewerbungsdaten wo jeder vorherige Job eine Zeile in einer Excel-Datei war. Ich möchte den Datensatz so transformieren, dass es Spalten für jeden früheren Arbeitgeber gibt. 1,2,3,4 usw.Datenrahmen-Umformung in R basierend auf der Anzahl der eindeutigen Werte
Ich denke, dass das Problem am besten mit einem Beispiel erklärt wird. Wie komme ich vom Startdatenrahmen zum gewünschten Datenrahmen?
Ich habe versucht, etwas schmelzen und Gießen, aber ich bin stecken geblieben, weil ich nicht eine Spalte für jeden eindeutigen Firmennamen, sondern basierend auf der Anzahl der eindeutigen Firmennamen erstellen möchte.
id <- c(1000,1000,1002,1007,1007,1007,1007,1009)
employers <-c("Ikea","Subway","DISH","DISH","Ikea","Starbucks","Google","Google")
start_date <- c("2/1/2013","5/1/2000","4/1/2012","3/1/2014","8/15/2011","4/15/2008","2/1/2004","3/15/2010")
start <- data.frame(cbind(id,employers,start_date))
colnames(start) <- c("id","employers","start_date")
start
unique_id <- c(1000,1002,1007,1009)
emp1 <- c("Ikea","DISH","DISH","Google")
emp2 <- c("Subway",NA,"Ikea",NA)
emp3 <- c(NA,NA,"Starbucks",NA)
emp4 <- c(NA, NA,"Google",NA)
emp1_start <- c("2/1/2013","4/1/2012","3/1/2014","3/15/2010")
emp2_start <- c("5/1/2000",NA,"8/15/2011",NA)
emp3_start <- c(NA,NA,"4/15/2008",NA)
emp4_start <- c(NA,NA,"2/1/2004",NA)
desired <- data.frame(cbind(unique_id,emp1,emp2,emp3,emp4,emp1_start,emp2_start,emp3_start,emp4_start))
desired
'start $ time <- mit (start, ave (as.zeichen (id), id, FUN = seq_along)); reshape (start, direction = "breit", idvar = "id", sep = "") 'von der anderen Antwort. – thelatemail
Sie haben vergessen, die Spalten umzubenennen :-) (nur Spaß ... Ihr Codegolf schlägt meins handlich). – r2evans
Danke @thelatemail, um das Duplikat zu finden und auch eine Antwort mit meinem Beispiel zu posten. Das Erstellen der Zeitvariable, wie sie von reshape erwartet wird, funktionierte perfekt auf meinen tatsächlichen Daten mit ist viel größer und unordentlicher. – andrea