代码之家  ›  专栏  ›  技术社区  ›  mmyoung77

熔融功能(R/重塑)传递错误

  •  0
  • mmyoung77  · 技术社区  · 6 年前

    我的数据如下:

    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
    

    我想要的是两个几何路径图(一个是alpha图,一个是beta图),比较测试和控制。下面是一个类似测试的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 回复  |  直到 6 年前
        1
  •  0
  •   mmyoung77    6 年前

    如果其他人有这个问题,我最终会这么做:

    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