【发布时间】:2020-10-10 08:01:34
【问题描述】:
我有一个如下所示的数据框:
dat <- data.frame(QuarterYear = c("Q4 2019", "Q4 2019", "Q4 2019",
"Q4 2019", "Q4 2019", "Q4 2019", "Q4 2019", "Q4 2019", "Q4 2019",
"Q4 2019", "Q4 2019", "Q4 2019", "Q1 2020", "Q1 2020", "Q1 2020",
"Q1 2020", "Q1 2020", "Q1 2020", "Q1 2020", "Q1 2020", "Q1 2020",
"Q1 2020", "Q1 2020", "Q1 2020", "Q2 2020", "Q2 2020", "Q2 2020",
"Q2 2020", "Q2 2020", "Q2 2020", "Q2 2020", "Q2 2020", "Q2 2020",
"Q2 2020", "Q2 2020", "Q2 2020", "Q3 2020", "Q3 2020", "Q3 2020",
"Q3 2020", "Q3 2020", "Q3 2020", "Q3 2020", "Q3 2020", "Q3 2020",
"Q3 2020", "Q3 2020", "Q3 2020"),
Grade = c("Grade 8", "Grade 8",
"Grade 8", "Grade 9", "Grade 9", "Grade 9", "Grade 10", "Grade 10",
"Grade 10", "Grade 11", "Grade 11", "Grade 11", "Grade 8", "Grade 8",
"Grade 8", "Grade 9", "Grade 9", "Grade 9", "Grade 10", "Grade 10",
"Grade 10", "Grade 11", "Grade 11", "Grade 11", "Grade 8", "Grade 8",
"Grade 8", "Grade 9", "Grade 9", "Grade 9", "Grade 10", "Grade 10",
"Grade 10", "Grade 11", "Grade 11", "Grade 11", "Grade 8", "Grade 8",
"Grade 8", "Grade 9", "Grade 9", "Grade 9", "Grade 10", "Grade 10",
"Grade 10", "Grade 11", "Grade 11", "Grade 11"),
Type = c("overallAverage",
"CT", "RT", "overallAverage", "CT", "RT", "overallAverage", "CT",
"RT", "overallAverage", "CT", "RT", "overallAverage", "CT", "RT",
"overallAverage", "CT", "RT", "overallAverage", "CT", "RT", "overallAverage",
"CT", "RT", "overallAverage", "CT", "RT", "overallAverage", "CT",
"RT", "overallAverage", "CT", "RT", "overallAverage", "CT", "RT",
"overallAverage", "CT", "RT", "overallAverage", "CT", "RT", "overallAverage",
"CT", "RT", "overallAverage", "CT", "RT"),
value = c(2.48, 2.21,
0.27, 3.48, 3.03, 0.45, 4.6, 4, 0.6, 2.8, 2.4, 0.4, 2.54, 2.28,
0.26, 3.45, 3, 0.45, 4.46, 3.88, 0.58, 3.56, 2.81, 0.75, 2.47,
2.14, 0.33, 2.96, 2.54, 0.41, 4.1, 3.69, 0.41, 3.44, 2.61, 0.83,
2, 1.81, 0.19, 2.54, 2.26, 0.28, 4.11, 3.68, 0.43, 2.67, 2.11,
0.56), stringsAsFactors = FALSE)
我正在尝试将此数据框重塑为宽格式,其中 Type 的唯一值将是行,并且将根据 QuarterYear 和 Grade 填充值。
简单来说,如果第一行是OverallAverage,那么前4列将代表Q4 2019-Grade 8到Q3 2020- Grade 8。接下来的 4 列将用于 Q4 2019-Grade 9 到 Q3 2020-Grade 9 等等。
我尝试使用reshape 函数
widerDat <- reshape(dat, direction = "wide",idvar = "Type",timevar = "value")
如何组合QuarterYear 和Grade 以获得所需的输出?
请帮助我找到合适的解决方案。提前致谢!!
【问题讨论】:
-
这行得通吗? dat %>% pivot_wider(names_from = c(QuarterYear, Grade), values_from = value)
-
这能回答你的问题吗? How to reshape data from long to wide format
-
@prosoitos 显然不是,OP 经历了拆分时间变量的特殊情况。