R 表合并-结果大于输入数据表

R 表合并-结果大于输入数据表,r,merge,left-join,data.table,R,Merge,Left Join,Data.table,我有两个数据表df1,参考df 内部结构如下: Classes ‘data.table’ and 'data.frame': 10153986 obs. of 18 variables: $ chr_no : chr "1" "1" "1" "1" ... $ pos : int 238 324 340 353 355 357 380 420 435 571 ... $ ref : chr "C" "A" "G" "T" ..

我有两个数据表<代码>df1,参考df

内部结构如下:

Classes ‘data.table’ and 'data.frame':  10153986 obs. of  18 variables:
 $ chr_no        : chr  "1" "1" "1" "1" ...
 $ pos           : int  238 324 340 353 355 357 380 420 435 571 ...
 $ ref           : chr  "C" "A" "G" "T" ...
 $ id            : logi  NA NA NA NA NA NA ...
 $ alt           : chr  NA NA NA NA ...
 $ af            : num  NA NA NA NA 0.807 NA NA 0.877 NA 0.868 ...
 $ cases_hom     : int  NA NA NA NA 50 NA NA 58 NA 59 ...
 $ cases_het     : int  NA NA NA NA 15 NA NA 7 NA 6 ...
 $ cases_count   : int  NA NA NA NA 115 NA NA 123 NA 124 ...
 $ controls_hom  : int  NA NA NA NA 48 NA NA 55 NA 56 ...
 $ controls_het  : int  NA NA NA NA 13 NA NA 6 NA 5 ...
 $ controls_count: int  NA NA NA NA 109 NA NA 116 NA 117 ...
 $ cc_trend      : num  NA NA NA NA 0.812 ...
 $ cc_geno       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ cc_all        : num  NA NA NA NA 0.492 ...
 $ cc_dom        : num  NA NA NA NA 0.491 ...
 $ cc_rec        : num  NA NA NA NA 1 NA NA 1 NA 1 ...
 $ cmh_p_val     : num  0.9267 0.0672 0.0279 0.3939 0.2522 ...
 - attr(*, ".internal.selfref")=<externalptr> 


Classes ‘data.table’ and 'data.frame':  9915916 obs. of  5 variables:
 $ chr_no  : chr  "10" "10" "10" "10" ...
 $ pos     : int  86 126 148 208 232 396 413 413 454 1173 ...
 $ snp_name: chr  "rs459413697" "rs446265986" "rs460495236" "rs437891922" ...
 $ ref     : chr  "G" "G" "T" "G" ...
 $ alt     : chr  "C,T" "A,T" "C,G" "T" ...
 - attr(*, ".internal.selfref")=<externalptr
生成的数据表是

> dim(result_data)
[1] 10154765       20
> sum(duplicated(df1))
[1] 0
> sum(duplicated(ref_df))
[1] 0
所以我不确定发生了什么。我已经调查过了 我使用的是最新数据。表1.9.5。

请尝试

>>sum(duplicated(df1[, c("chr_no", "pos", "ref")]))
这将根据连接键提供副本的总数

>>table(duplicated(df1[, c("chr_no", "pos", "ref")]))
这将根据连接键提供重复记录和非重复记录的总数

>>table(duplicated(df1[, c("chr_no", "pos", "ref")]))
同样,对于另一个数据帧

>>table(duplicated(ref_df[, c("chr_no", "pos", "ref")]))

那么您希望得到什么结果呢?检查连接列的重复,而不是所有列;并使用常规的
数据。表
[
运算符用于任何不是最大速度的完全外部联接的联接。感谢@Ala。根据您的建议,我能够识别我使用的数据中的某些错误,并且它确实有重复的行。问题已解决。:)