Функция плавления (R / Reshape), выдающая ошибку - PullRequest
0 голосов
/ 05 октября 2018

Мои данные выглядят так:

set.seed(123)
library(tidyverse)
library(reshape2)
Year <- c(2017, 2017, 2017, 2018, 2018, 2018)
Month <- c(10, 11, 12, 1, 2, 3)
alpha_test <- runif(n = 6, min = 0.2, max = 0.25)
alpha_control <- runif(n = 6, min = 0.17, max = 0.22)
beta_test <- runif(n = 6, min = 0.01, max = 0.1)
beta_control <- runif(n = 6, min = 0.03, max = 0.05)

df <- tibble(Year, Month, alpha_test, alpha_control, beta_test, beta_control)
df

Мне нужны две диаграммы geom_path (одна диаграмма для альфы, одна для беты), которые сравнивают тест и контроль.Вот пример из Excel для аналогичного теста:

enter image description here

Я предполагаю, что мне потребуется каким-то образом растопить данные, чтобы получить то, что я хочу.Но команда

rawMelt <- melt(df, id.vars = c(Year, Month))

выдает ошибку Error: id variables not found in data: 2017, 2018, October, November, December, January, February, March.Как бы вы расплавили эти данные, чтобы я смог создать график, который мне нужен?

1 Ответ

0 голосов
/ 05 октября 2018

Это то, с чем я, в конце концов, столкнулся, если у кого-то еще возникнет эта проблема:

rawMelt <- melt(df, id.vars = c("Year", "Month")) %>%
  mutate(
    theSource = ifelse(grepl("test", variable), "test", "control"),
    metric = ifelse(grepl("alpha", variable), "alpha", "beta"),
    monthText = paste0(Year, "_", ifelse(Month < 10, "0", ""), Month)
  ) %>%
  select(-variable)

g_maker <- function(theMetric) {
  theChart <- rawMelt %>%
    filter(metric == theMetric)
  g <- ggplot(theChart, aes(x = as.factor(monthText), y = value, group = theSource)) +
    geom_path(aes(color = theSource)) +
    scale_color_manual(values = c("red", "black")) +
    theme_minimal() + 
    xlab(NULL) +
    theme(axis.text.x = element_text(angle = 75, hjust = 1))
  return(g)
}

alpha_graph <- g_maker("alpha")
beta_graph <- g_maker("beta")
alpha_graph
beta_graph
...