如何从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
问题:
inf
列? 改为:
reader_id book_id date
1: 10 1 d1
2: 20 2 d2
3: 30 4 d4
4: 50 5 d5
答案 0 :(得分:3)
这个怎么样:
R> unique(tbl, by=c("reader_id", "book_id"))[,-4,with=F]
# 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",with=F]
答案 1 :(得分:-1)
tbl[,.SD[1],by=c('reader_id','book_id')]