代码之家  ›  专栏  ›  技术社区  ›  Przemyslaw Remin

是否可以从dplyr管道调用dcast函数?

  •  1
  • Przemyslaw Remin  · 技术社区  · 5 年前

    是否可以在dplyr管道中使用dcast函数?我应该如何定义dcast的第一个参数?如何首先使用dplyr过滤数据,然后使用reformae2将其转换为宽格式?

    set.seed(45)
    df <- data.frame(
        name = rep(c("firstName", "secondName"), each=4),
        numbers = rep(1:4, 2),
        value = rnorm(8)
        )
    

    我想这样做:

    library(dplyr)
    library(reshape2)
    
    df <- df %>% 
      filter(numbers<>4) %>% 
      dcast(...)
    

    可以在dplyr转换中使用dcast吗?如果是,这里的第一个论点是什么?

    1 回复  |  直到 5 年前
        1
  •  3
  •   akrun    5 年前

    这个 data 中的参数 dcast 不是真的需要 %>% formula 还有那个女人值.var'列

    library(dplyr)   
    df %>% 
        filter(numbers != 4) %>%
        reshape2::dcast(name ~ numbers, value.var = 'value')
    #      name          1          2          3
    #1  firstName  0.3407997 -0.7033403 -0.3795377
    #2 secondName -0.8981073 -0.3347941 -0.5013782
    

    如果我们需要指定 数据

    df %>% 
        filter(numbers != 4) %>%
        reshape2::dcast(., name ~ numbers, value.var = 'value')
    

    与 tidyverse ,有 pivot_wider tidyr -执行类似于 reshape2::dcast (以及更多)并返回 tibble

    library(tidyr)
    df %>% 
        filter(numbers != 4) %>% 
        pivot_wider(names_from = numbers, values_from = value)
    # A tibble: 2 x 4
    #  name          `1`    `2`    `3`
    #  <chr>       <dbl>  <dbl>  <dbl>
    #1 firstName   0.341 -0.703 -0.380
    #2 secondName -0.898 -0.335 -0.501
    
    推荐文章