data.table中的唯一标识符

问题描述 投票:3回答:2

我有一个data.table,其中包含11个变量和200,000+行。我正在尝试在此unique identifier中找到key(换言之,data.table)。

我正在Stata中寻找isid之类的东西,它检查指定的变量是否唯一地标识观察结果。有人可以帮忙吗?

r uniqueidentifier data.table stata
2个回答
3
投票

这不能完全回答OP问题[我还没有使用过data.table],但是只有用户才能回答R OP的问题。我的重点是解释isidStata上的实际工作方式。我使用来自R数据库的数据(您需要为此数据安装optmatch)。

library(optmatch)
data(nuclearplants)
sample<-nuclearplants

我只关注数据帧的子集,因为我的目标是仅解释isid在做什么:

sample<-sample[,c(1,2,5,10)]
head(sample,5)
 cost  date  cap cum.n
H 460.05 68.58  687    14
I 452.99 67.33 1065     1
A 443.22 67.33 1065     1
J 652.32 68.00 1065    12
B 642.23 68.00 1065    12

[现在,当我使用Stata命令isid cost时,它什么也不显示,这意味着对成本没有重复的观察(R命令是unique(sample$cost)sample[duplicated(sample),]

[1] cost  date  cap   cum.n
<0 rows> (or 0-length row.names).)

[但是,当我们使用isid date,即日期变量时,Stata报告它不是唯一的。或者,如果您运行duplicates date examples,则Stata将为您提供重复的观察值,如下所示:

. duplicates example date

Duplicates in terms of date

  +-------------------------------+
  | group:   #   e.g. obs    date |
  |-------------------------------|
  |      1   2         27   67.25 |
  |      2   2          2   67.33 |
  |      3   3         29   67.83 |
  |      4   2          4      68 |
  |      5   5          8   68.42 |
  |-------------------------------|
  |      6   2          1   68.58 |
  |      7   2         12   68.75 |
  |      8   3         14   68.92 |
  +-------------------------------+

为了解释输出,就是说观察67.25有两个重复的观察(如#所示)。第一个观察值对应于第27行(它没有以67.25标识第二个重复项的行号)。 Group给出每次重复的唯一标识符。

R command for the same is duplicated(sample$date). 
duplicated(sample$date)
 [1] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE
[22] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE

To identify the unique observation we can also use unique(sample$date) in R. 

我们可以对两个变量isid cost date执行相同的操作。同样,Stata不能识别两个变量之间的重复观测值。在unique(sample[,c(1,2)]中使用R时也是如此。

同样,如果我对所有四个变量都运行isid,则Stata说它是唯一的(无警告)。

duplicates example  cost date cap cum_n

Duplicates in terms of cost date cap cum_n

(0 observations are duplicates)

unique(sample)中的R相同。

结论

:因此,我认为,只要一个变量是唯一的(即它没有重复的观察结果),则包含唯一变量的变量组合就应该始终是唯一的。如果我错了,请纠正我。

3
投票

我认为您对data.tablekey感到有些困惑。

© www.soinside.com 2019 - 2024. All rights reserved.