当两列以上

时间:2016-03-18 10:39:03

标签: r dataframe reshape

道歉,如果之前已经提出过这个问题,我没有发现任何相似之处。 因此,当我们有类似

之类的东西时重塑它是微不足道的
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

首页问题很清楚。 任何意见或建议将受到高度赞赏。

2 个答案:

答案 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