合并data.frames会导致错误

时间:2015-01-09 15:59:36

标签: r merge

我正在尝试合并两个数据集。两者都具有相同的ID,相同的行具有不同的结果

data<-read.table(file="file.profile", header=T)
data$PHENO<-data$PHENO-1
data$ID<-paste(data$FID,":",data$IID, sep="")

> head(data)
      FID    IID PHENO CNT  CNT2 SCORE ID
    1 FID1   10     0 10000 100 0.01 FID1:10
    2 FID2   10     0 10000 100 0.01 FID2:10

> cov<-read.table(file="cov.txt", header=T)
> cov$ID<-paste(cov$FID,":",cov$IID, sep="")

> head(cov)
  FID IID COV1 COV2    COV3    COV4    COV5 COV6 COV7 PHENO ID
1 FID1  10    0    0 0.101  0.10  0.22    2   179     222 FID1:10
2 FID2  10    0    0 0.102  0.10  0.23    2   176     222 FID2:10

> data<-merge(cov,data,by.x="ID", by.y="ID", all=T)

> head(data)
         ID   FID.x IID.x COV1 COV2    COV3    COV4    COV5 COV6 COV7 PHENO.x
1 FID1:10 FID1  10    0    0 0.101  0.10  0.22    2   179     222
2 FID2:10 FID2   10   0    0 0.102  0.10  0.23    2   176     222
    FID.y IID.y PHENO.y    CNT  CNT2     SCORE
    FID1   10     0 10000 100 0.01 
    FID2   10     0 10000 100 0.01 

为什么我的列中添加了“.x”和“.y”?我怎么能避免这个?

非常感谢

1 个答案:

答案 0 :(得分:1)

如果您的两个数据框都有相同名称的列,merge()会在列名称附加xy,以确定他们来自哪个数据集。

此处,您在FIDIID中都有一个名为datacov的列;因此,FID.xIID.x来自cov数据框,FID.yIID.y来自data数据框。

通过在两个数据集中使用唯一的列名来避免这种情况。