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

如何显式命名由.N函数生成的count列?

  •  1
  • Joe  · 技术社区  · 7 年前

    dt <- data.table(id =  c(1, 1, 2))
    dt_by_id <- dt[, .N, by = id] 
    
    dt_by_id
       id N
    1:  1 2
    2:  2 1
    

    count ). 在帮助中,它说:

    .N是一个整数,长度为1,包含组中的行数。当中的列名未知时,这可能很有用 x中匹配到的行数,对于i的每行,不考虑 nomatch是NA还是0。在结果中将其重命名为N(无点) 有关更多详细信息和示例,请参见常见问题4.6),除非明确说明

    如何在创建 dt_by_id 数据表?(我知道以后怎么给它改名)我试过了

    dt_by_id <- dt[, count = .N, by = id]
    

    但这导致了

    Error in `[.data.table`(dt, , count = .N, by = id) : 
      unused argument (count = .N)
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   MichaelChirico    7 年前

    dt[, .(count=.N), by = id]

    这与 dt[, list(count=.N), by = id] ,如果你愿意的话; . list 在这里。

        2
  •  0
  •   akrun    7 年前

    setnames

    setnames(dt_by_id, "N", 'count')
    

    或使用 rename

    library(dplyr)
    dt_by_id %>%
       rename(count = N)
    #  id count
    #1:  1     2
    #2:  2     1