私は、以前の各ジョブがExcelファイル内の行であるジョブアプリケーションデータを扱っています。過去の各雇用者1,2,3,4などのための列があるようにデータセットを変換したい。ユニークな値の数に基づいてRでデータフレームを再形成
問題は例で最もよく説明されていると思う。開始データフレームから目的のデータフレームに到達するにはどうすればよいですか?
私はいくつかの融解とキャスティングを試みましたが、一意の会社名ごとに作成された列を必要とせず、独自の会社名の数に基づいているため、
(stringsAsFactors = FALSE
で固定するのに十分な意図的
factor
sの、簡単に)あなたのデータを使用して
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 < - (start、ave(.character(id)、id、FUN = seq_along));もう一つの答えからreshape(start、direction = "wide"、idvar = "id"、sep = "") ' – thelatemail
あなたは列の名前を変更するのを忘れていました:-)(ちょうど冗談です...あなたのコード・ゴルフは私の手をひどく叩きます)。 – r2evans
私の例を使って、重複を発見し、回答を投稿するための@thelatemailに感謝します。私の実際のデータには、reshapeが期待しているようにtimevarを作成するのは、もっと大きくて面倒な作業でした。 – andrea