與我一起工作的數據中的常見任務是將客戶端數據從長變爲寬。我有一個過程,用下面概述的Reshape做到這一點,它基本上創建了一個附加了數字索引的新的(但未修改的)列。在我的情況下,我不想對數據進行任何修改。我的問題,因爲我經常使用reshape2進行其他操作,這是如何通過dcast實現的?例如,似乎並不需要使用id來融化示例數據,但我不確定如何將它擴大。任何人都可以在reshape2中提供代碼,以便在下面的示例中生成與「寬」相當的框架?使用Reshape2將Reshape DF從長變寬爲R,但不使用聚合功能
謝謝。
例date_up <- as.numeric(as.Date("1990/01/01"))
date_down <- as.numeric(as.Date("1960/01/01"))
ids <- data.frame(id=rep(1:1000, 3),site=rep(c("NMA", "NMB","NMC"), 1000))
ids <- ids[order(ids$id), ]
dates <- data.frame(datelast=runif(3000, date_down, date_up),
datestart=runif(3000, date_down, date_up),
dateend=runif(3000, date_down, date_up),
datemiddle=runif(3000, date_down, date_up))
dates[] <- lapply(dates[ , c("datestart", "dateend", "datemiddle")],
as.Date.numeric, origin = "1970-01-01")
df <- cbind(ids, dates)
# Make a within group index and reshape df
df$gid <- with(df, ave(rep(1, nrow(df)), df[,"id"], FUN = seq_along))
wide <- reshape(df, idvar = "id", timevar = "gid", direction = "wide")
目前一個需要兩次運行這個(與初始誤差,大部分R-newbs會發現令人費解具有做「關閉「,因爲對象'df'是R中的F密度函數。第二次有'df'-數據對象,所以沒有錯誤發生(我只做了一個30行矩陣。 ) –
你是正確的,謝謝你指出這一點。我更新了代碼來修復錯誤。 –