如何融化数据框

L.Z*_*ngg -2 r ggplot2 facet-wrap melt

我有一个数据框dratiodf

   Date       D10       D21       D63      D126      D252
2019-09-23 0.1557585 0.3977892 0.8583822 0.7153107 0.7517688
2019-09-24 0.1513844 0.2142586 0.7501128 0.6736790 0.7275896
2019-09-25 0.5314460 0.4254800 0.8604258 0.6612713 0.7469207
2019-09-26 0.5135381 0.4250006 0.9424716 0.7008503 0.7661933
2019-09-27 0.4816461 0.2371428 0.7969672 0.6351504 0.7307106
2019-09-30 0.6414031 0.3407633 0.8207621 0.6854996 0.7346074
Run Code Online (Sandbox Code Playgroud)

我想做的是将这些列融合在一起,形成一个如下所示的数据框:

Date:        Type:  Value:
2019-09-23   D10    0.1557585
2019-09-23   D21    0.3977892
2019-09-23   D63    0.8583822
2019-09-23   D126   0.7153107
2019-09-23   D252   0.7517688
2019-09-34   D10    0.1513844
2019-09-34   D21    0.2142586
Run Code Online (Sandbox Code Playgroud)

我想要这个,以便我可以按类型划分最终的绘图,如下所示:

ggplot(dratiodf, aes(x=Date, y=Value))+
 geom_line()+
 facet_wrap(.~type)+
 theme_wsj()
Run Code Online (Sandbox Code Playgroud)

我尝试过使用熔化功能,但我就是不知道如何使用它。

另外,你能发现我的图形代码有什么问题吗?

akr*_*run 5

我们可以用gather

\n\n
library(tidyr) \nlibrary(dplyr)\ndf1 %>%\n  gather(Type, Value, -Date)\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者使用pivot_longer(来自tidyr_1.0.0

\n\n
df1 %>%\n  pivot_longer(cols = - Date, names_to =  "Type", values_to = "Value")\n# A tibble: 30 x 3\n#   Date       Type  Value\n#   <chr>      <chr> <dbl>\n# 1 2019-09-23 D10   0.156\n# 2 2019-09-23 D21   0.398\n# 3 2019-09-23 D63   0.858\n# 4 2019-09-23 D126  0.715\n# 5 2019-09-23 D252  0.752\n# 6 2019-09-24 D10   0.151\n# 7 2019-09-24 D21   0.214\n# 8 2019-09-24 D63   0.750\n# 9 2019-09-24 D126  0.674\n#10 2019-09-24 D252  0.728\n# \xe2\x80\xa6 with 20 more rows\n
Run Code Online (Sandbox Code Playgroud)\n\n

数据

\n\n
df1 <- structure(list(Date = c("2019-09-23", "2019-09-24", "2019-09-25", \n"2019-09-26", "2019-09-27", "2019-09-30"), D10 = c(0.1557585, \n0.1513844, 0.531446, 0.5135381, 0.4816461, 0.6414031), D21 = c(0.3977892, \n0.2142586, 0.42548, 0.4250006, 0.2371428, 0.3407633), D63 = c(0.8583822, \n0.7501128, 0.8604258, 0.9424716, 0.7969672, 0.8207621), D126 = c(0.7153107, \n0.673679, 0.6612713, 0.7008503, 0.6351504, 0.6854996), D252 = c(0.7517688, \n0.7275896, 0.7469207, 0.7661933, 0.7307106, 0.7346074)), \n class = "data.frame", row.names = c(NA, \n-6L))\n
Run Code Online (Sandbox Code Playgroud)\n