我正在处理每个以前的作业都是excel文件中的行的作业应用程序数据。我想转换数据集,以便每个过去的雇主1,2,3,4等都有列...根据唯一值的数量在R中重塑数据帧
我认为这个问题最好用一个例子来解释。我如何从开始数据帧到所需的数据帧?
我尝试了一些熔炼和铸造,但我陷入困境,因为我不想为每个独特的公司名称创建一列,而是基于唯一公司名称的数量。
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 < - with(start,ave(as.character(id),id,FUN = seq_along));从另一个答案重新设置(start,direction =“wide”,idvar =“id”,sep =“”))。 – thelatemail
你忘了重新命名列:-)(只是在开玩笑......你的编程器能够轻松击败我)。 – r2evans
感谢@thelatemail发现重复并使用我的示例发布答案。按照预期的方式创建timevar可以很好地处理我的实际数据,并且它更大更复杂。 – andrea