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

停止dplyr在聚集(…)%中拆分名称<%单独(…)

  •  1
  • Hedgehog  · 技术社区  · 8 年前

    在执行以下操作时,如何阻止dplyr自动拆分名称 gather separate ?

    cost <- data.frame(Date = rep('1970-01-01', 3), 
                       Atr = runif(3), 
                       Atrb = runif(3), 
                       a_t = runif(3), 
                       b_t = runif(3), 
                       a_t = runif(3), 
                       b_t = runif(3), 
                       a_t = runif(3), 
                       b_t = runif(3))
    
    names(cost) <- c('Date', 'Atr','Atrb','a_t','b_t','a_t','b_t','a_t','b_t')
    
    # Now we reshape and see the problem
    idx = 4:9 
    names(cost)[idx] = paste0(names(cost)[idx], ".", c(sapply(LETTERS[1:3], rep, times = 2)) )
    
    cost.long = cost %>%
        gather(key, value, -c(Date:Atrb)) %>%
        separate(key, into = c("Metric", "Group"))
    
    cost.long
    

    您会注意到,在输出中,变量名称已被拆分,现在只有一个组 t :

    > cost.long
             Date       Atr      Atrb Metric Group     value
    1  1970-01-01 0.3555041 0.9343369      a     t 0.9022378
    2  1970-01-01 0.2812809 0.9770834      a     t 0.0204206
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   akrun    8 年前

    我们可以使用 sep 中的参数 separate

    cost.long <- cost %>%
                  gather(key, value, -c(Date:Atrb)) %>%
                  separate(key, into=c("Metric", "Group"), sep="_")
    
    推荐文章