我有一个如下数据集:
Prefix Ric Mrkt_segmt Exchange
22 122N E NYM
22 222N P NYM
22 22N C NYM
23 123L E NYM
23 223L P NYM
23 23L P NYM
23 23L C NYM
26 126L E NYM
26 226L P NYM
26 26L C NYM
我想重塑这些数据,因此它看起来像这样:
prefix exchange ric_root1 mrkt_segmt1 ric_root2 mrkt_segmt2 ric_root3 mrkt3
22 NYM 122N E 222N P 22N C
23 NYM 123L E 223L P
和exchange_prefix和exchange的组合是唯一的ID
我怎么能在R?中做到这一点?
答案 0 :(得分:0)
使用更新的数据,将代码更改为以下内容。概念 完全 相同:
在基地R:
mydf$time <- with(mydf, ave(rep(1, nrow(mydf)),
Prefix, Exchange, FUN = seq_along))
reshape(mydf, direction = "wide",
idvar=c("Prefix", "Exchange"),
timevar="time")
使用&#34; reshape2&#34;添加&#34;时间&#34;变量如上:
library(reshape2)
dfL <- melt(mydf, id.vars=c("Prefix", "Exchange", "time"))
dcast(dfL, Prefix + Exchange ~ variable + time)
添加&#34;时间&#34;变量,你很高兴:
mydf$times <- ave(mydf$ID, mydf$ID, FUN = seq_along)
reshape(mydf, idvar="ID", timevar="times", direction = "wide")
# ID Var1.1 Var2.1 Var1.2 Var2.2
# 1 1 A X B Y
# 3 2 C X D Y
# 5 3 E X F Y
或者,在添加&#34;次&#34;如上所述,您可以使用&#34; reshape2&#34;打包以进一步melt
您的数据,然后重新塑造它:
dfL <- melt(mydf, id.vars=c("ID", "times"))
dcast(dfL, ID ~ variable + times)
# ID Var1_1 Var1_2 Var2_1 Var2_2
# 1 1 A B X Y
# 2 2 C D X Y
# 3 3 E F X Y