Given dataframes df1 and df2 as follows:
df1:
df1 <- structure(list(date = structure(c(1L, 2L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 3L), .Label = c("2021/1/31", "2021/2/1", "2021/2/10",
"2021/2/2", "2021/2/3", "2021/2/4", "2021/2/5", "2021/2/6", "2021/2/7",
"2021/2/8", "2021/2/9"), class = "factor"), value1 = c(9.76,
9.76, 9.88, 9.31, 9.71, 9.56, 9.27, 9.22, 9.21, 9.08, 8.78),
value2 = c(6.84, 6.88, 6.95, 6.65, 6.94, 6.85, 6.66, 6.66,
6.6, 6.5, 6.25), value3 = c(6.33, 6.21, 6.31, 6.2, 6.56,
6.36, 6.36, 6.25, 6.1, 6.02, 5.76), value4 = c(10.68, 10.91,
11, 10.49, 10.8, 10.5, 10.2, 9.85, 10.03, 9.8, 9.51), value5 = c(7.77,
7.84, 7.83, 7.44, 7.83, 7.77, 7.6, 7.46, 7.46, 7.39, 7.29
)), class = "data.frame", row.names = c(NA, -11L))
df2:
df2 <- structure(list(type = structure(c(2L, 2L, 3L, 3L, 1L), .Label = c("pct_change",
"price", "quantity"), class = "factor"), columns = structure(1:5, .Label = c("value1",
"value2", "value3", "value4", "value5"), class = "factor")), class = "data.frame", row.names = c(NA,
-5L))
Plot time series for df1:
library(ggplot2)
library(data.table)
df1$date <- as.Date(df1$date)
df1.m <- melt(df1, id = "date") # convert to long format
ggplot(data = df1.m,
aes(x=date, y = value, colour=variable)) +
geom_line(size = 1, alpha = 1)
ggsave("df1.png")
Out:
Now I hope to loop all columns but based df2, which means for each columns, if its type are identical, then plot them on same plot and finally save them with name of type.
For dataset df1, we will finally generate three plots: price.png, quantity.png and pct_change.png.
How could I achieve that based on code above? Sincere thanks at advance.
