代码之家  ›  专栏  ›  技术社区  ›  NelsonGon phoxis

数据表:管道替代方案

  •  3
  • NelsonGon phoxis  · 技术社区  · 7 年前

    我会在tidyverse中这样做,如下所示:

    library(nycflights13)
    library(tidyverse)
    flights %>% 
      left_join(planes, by = "tailnum") %>% 
      group_by(manufacturer, carrier) %>% 
      summarise(N = n()) %>% 
      arrange(desc(N)) %>% 
      top_n(10, N) %>% 
      ggplot(aes(carrier, N, fill = manufacturer)) + geom_col() + guides(fill = FALSE)
    

    library(data.table)
    fly<-copy(nycflights13::flights)
    setDT(fly)
    setkey(fly,tailnum)
    planes1 <- copy(planes)
    setDT(planes1)
    setkey(planes1, tailnum)
    #head(planes1,2)
    Merged <- merge(fly, planes1, by = "tailnum")
    #Group by manufacturer
    Merged[, .N, by = .(manufacturer,carrier)] #[, order(manufacturer, carrier)]
    

    1 回复  |  直到 7 年前
        1
  •  12
  •   Jaap    7 年前

    您可以使用方括号 [ ] 把东西串在一起 . 此外,您还可以执行 ggplot 打电话到房间里 j 部分 语法:

    nms <- setdiff(names(planes1), "tailnum")
    
    fly[planes1, on = .(tailnum), (nms) := mget(nms)
        ][, .N, by = .(manufacturer,carrier)
          ][order(-N)
            ][, .SD[1:10], by = .(manufacturer,carrier)
              ][, ggplot(.SD, aes(carrier, N, fill = manufacturer)) +
                  geom_col() +
                  guides(fill = FALSE)]
    

    其中:

    enter image description here