在我的数据框中,我有3列,其中一列是日期,
实施例,
Region variable value
TN Jan-07 704
AU Jan-07 3621
WB Jan-07 776
KN Jan-07 1015
TN. Feb-07 90
KN. Feb-07 87
我将数据框从long旋转到宽,以将每个日期(变量列)保持为一个列标题。在透视之前,我可以看到日期框架按日期排序。然而,在我的支点之后,按字母顺序排序,如所有Aprils首先,8月下一行等。如何按月订购列名?
Out <- dcast(testdata,Region~variable,value.var = "value")
输出应该是,
Region Jan-07 Feb-07 Mar-07.....
TN. ............................
AU. ............................
WB. ............................
KN. ............................
但我得到的是这个,
Region Apr-07 Apr-08 Aug-07.....
TN. ............................
AU. ............................
WB. ............................
KN. ............................
答案 0 :(得分:3)
这就是你想要的:
out <- reshape(testdata, idvar = "Region",
timevar = "variable", direction = "wide")
out
然后只需清除colnames
:
a = colnames(out)
b = sub('.*\\.', '', a)
colnames(out) = b
答案 1 :(得分:2)
您可以在重新塑造之前将日期转换为具有所需顺序的因子。例如:
library(tidyverse)
# Change the factor levels to the appropriate year range for your data
testdata.wide = testdata %>%
mutate(variable=factor(variable, levels=apply(expand.grid(month.abb, substr(1990:2017,3,4)), 1, paste, collapse="-"))) %>%
spread(variable, value)
Region Jan-07 Feb-07 1 AU 3621 NA 2 KN 1015 87 3 TN 704 90 4 WB 776 NA