如何使用.N返回data.table中的其他变量

时间:2018-11-09 09:46:11

标签: r data.table

我有以下data.table

library(data.table)
dt <- data.table(id=c(1,2,3,4,4,5,5),
           name=c('a','a','b','c','c','e','e'), 
           url=c('aa.com','aa1.com','bb.com','cc.com','cc.com', 'ee.com', 'ee.com'))

返回

   id name     url
1:  1    a  aa.com
2:  2    a aa1.com
3:  3    b  bb.com
4:  4    c  cc.com
5:  4    c  cc.com
6:  5    e  ee.com
7:  5    e  ee.com

dt中可以看到,urlid是唯一变量。 Name列不是唯一的,可以是相同数据的重复。例如,Name可以相同,但是urlid不能相同。

我想要的结果如下:

   id name     url N
1:  1    a  aa.com 1
2:  2    a aa1.com 1
3:  3    b  bb.com 1
4:  4    c  cc.com 2
5:  5    e  ee.com 2

能给我建议吗?

2 个答案:

答案 0 :(得分:0)

library(dplyr)

dt %>% group_by(id,name,url) %>%
  summarise(N = n())

# A tibble: 5 x 4
# Groups:   id, name [?]
     id name  url         N
  <dbl> <chr> <chr>   <int>
1     1 a     aa.com      1
2     2 a     aa1.com     1
3     3 b     bb.com      1
4     4 c     cc.com      2
5     5 e     ee.com      2

答案 1 :(得分:0)

这是可行的解决方案:unique(dt[,list(N=.N, id=id), by = url])