【问题标题】:subset data with key in R using `data.table` package使用`data.table`包在R中使用键子集数据
【发布时间】:2014-04-14 03:38:26
【问题描述】:

我有如下数据表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设置为key:

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) - 括号,而不是括号。

标签: r data.table subset


【解决方案1】:

这两种方法都可以

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 做了什么?
  • @PerriMa,这是将join 转换为data.table 的快捷方式。检查this post
猜你喜欢
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 2012-04-17
  • 2016-03-19
  • 2013-01-08
  • 1970-01-01
  • 2015-07-14
相关资源
最近更新 更多