使用`data.table`包在R中按关键字对数据进行子集筛选

3

我有一个名为tb1的数据表格

persid    date        rating
10000     1/1/2014    A
10000     1/2/2014    B
10001     1/1/2014    A
10001     1/2/2014    B
10002     1/1/2014    A
10002     1/2/2014    B
 .          .         .
 .          .         .
 .          .         .

我使用以下命令将 persid 设为键值:

setkey[tb1, persid]

但是当我运行以下命令时:
tb1['10000']

我的电脑出现了一个错误信息:

Error in `[.data.table`(prhistory, "10000") : typeof x.persid (integer) != typeof i.persid (character)

但如果我去掉引号,即只有tb1 [10000],那么它会给我第1000行的值。

那么我该如何使用整数作为键来对数据表进行子集筛选呢?

我正在使用data.table包。

谢谢。


这是 swetkey(tb1,persid) - 括号,不是方括号。 - jlhoward
1个回答

4
任何一种都可以使用。
setkey(tb1,persid)
tb1[J(10000)]
#    persid     date rating
# 1:  10000 1/1/2014      A
# 2:  10000 1/2/2014      B
tb1[persid==10000]
#    persid     date rating
# 1:  10000 1/1/2014      A
# 2:  10000 1/2/2014      B

谢谢,两个都有效!只是好奇,J10000 做了什么? - PMa
2
@PerriMa,这是一个将数据转换为data.table以进行join操作的快捷方式。请参考此帖子 - Arun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接