当多于两列时重塑为宽格式

reshape to wide format when more than two columns

如果之前有人问过这个问题,我深表歉意,我没有发现任何类似的问题。 所以,当我们有类似

的东西时,重塑是微不足道的
id status1 value
1  active   1
2  close    23

整形后的结果将是

id active close
1  1      23

但是,如果我们的 table 有多个状态栏怎么办?我们需要通过 status1 和 status2 列进行整形?

id status1 status2 value
1  active  complete 2
2  close   overdue  3

期待结果

id active close complete overdue

首页问题说清楚了。 任何意见或建议将不胜感激。

不太确定你想要什么,但也许这可行。

示例:

library(reshape2)

df <- as.data.frame(cbind(c(1,2,3), c("Active", "Close", "Active"),c("one", "two", "one"), c(5,6,7)))
colnames(df) <- c("id", "status1", "status2", "value")

df1 <- dcast(df, id ~ status1)
df2 <- dcast(df, id ~ status2)

merge(df1, df2)

还有一个选项:

library(reshape2)
df <- read.table(header=T, text="id status1 status2 val
1  active  complete 2
2  close   overdue  3")
recast(df, id~value, id.var = c(1, 4), value.var = "val")
#   id active close complete overdue
# 1  1      2    NA        2      NA
# 2  2     NA     3       NA       3