道歉,如果之前已经提出过这个问题,我没有发现任何相似之处。 因此,当我们有类似
之类的东西时重塑它是微不足道的id status1 value
1 active 1
2 close 23
重塑后的结果
id active close
1 1 23
但是,如果我们的表有多个状态列怎么办?我们需要通过status1和status2列重新整形吗?
id status1 status2 value
1 active complete 2
2 close overdue 3
期待结果
id active close complete overdue
首页问题很清楚。 任何意见或建议将受到高度赞赏。
答案 0 :(得分:1)
不太确定你追求的是什么,但也许这可行。
示例:
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)
答案 1 :(得分:0)
这是另一种选择:
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