R重塑宽,改变时间顺序

时间:2016-08-10 20:33:38

标签: r reshape

我在日期字段上使用reshape函数,并想知道是否有办法更改重新整形表中列出的字段的顺序。 我尝试在重塑之前对原始表进行排序,但它没有用。

DQ_Summary= data.frame(RuleID=c(1,2,1,2),
                      ProcessorTimeStamp=as.Date(c('2016-08-04','2016-08-04','2016-08-08','2016-08-08')),
                      ErrorCount=c(6,8,3,4))

#   RuleID ProcessorTimeStamp ErrorCount
# 1      1         2016-08-04          6
# 2      2         2016-08-04          8
# 3      1         2016-08-08          3
# 4      2         2016-08-08          4

Final_Summary = reshape(DQ_Summary,
                        timevar = "ProcessorTimeStamp",
                        idvar = c("RuleID"),
                        direction = "wide")

上面的代码返回一个格式为:

的表
#   RuleID ErrorCount.2016-08-04 ErrorCount.2016-08-08
# 1      1                     6                     3
# 2      2                     8                     4

我希望看到字段重新整形字段的顺序颠倒过来:

#   RuleID ErrorCount.2016-08-08 ErrorCount.2016-08-04
# 1      1                     3                     6
# 2      2                     4                     8

这看似微不足道,但这是我需要的东西。

1 个答案:

答案 0 :(得分:0)

在我们将'ProcessorTimeStamp'转换为dcast并将reshape2指定为factor日期后,levels的{​​{1}}更容易处理反方向

unique

或者可以使用library(reshape2) DQ_Summary$ProcessorTimeStamp <- factor(DQ_Summary$ProcessorTimeStamp, levels = as.character(sort(unique(as.Date(DQ_Summary$ProcessorTimeStamp)), decreasing = TRUE))) dcast(DQ_Summary, RuleID~ProcessorTimeStamp, value.var = "ErrorCount")

完成此操作
dplyr/tidyr