R data.table 得到独特的行也删除一些列

R data.table get unique rows dropping some columns as well

如何从 data.table 中获取唯一行并从结果中删除一些列,其中唯一性由不止一列中的值定义?例如:

tbl = data.table( 
  reader_id = c(10,20,20,30,50), 
  book_id = c(1,2,2,4,5), 
  date = c('d1','d2','d3','d4','d5'),
  inf = c('i1','i2','i3','i4','i5')
  )

 >tbl
   reader_id book_id date inf
1:        10       1   d1  i1
2:        20       2   d2  i2
3:        20       2   d3  i3
4:        30       4   d4  i4
5:        50       5   d5  i5

ut = unique(tbl[c(reader_id, book_id)])

结果我得到:

   reader_id book_id date inf
1:        NA      NA   NA  NA
2:        10       1   d1  i1
3:        20       2   d2  i2
4:        30       4   d4  i4
5:        50       5   d5  i5

问题:

  1. 为什么结果有 NA 值?如何摆脱它们?
  2. 如何从结果中删除 inf 列?

改为:

   reader_id book_id date 
1:        10       1   d1  
2:        20       2   d2  
3:        30       4   d4  
4:        50       5   d5 

这个怎么样:

R> unique(tbl, by=c("reader_id", "book_id"))[,-4]
#    reader_id book_id date
# 1:        10       1   d1
# 2:        20       2   d2
# 3:        30       4   d4
# 4:        50       5   d5

或者,如果您更喜欢按名称删除,

unique(tbl,by=c("reader_id", "book_id"))[,!"inf"]
tbl[,.SD[1],by=c('reader_id','book_id')]