合并 data.frames 导致错误

Merge data.frames cause error

我正在尝试合并两个数据集。两者具有相同的 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”?我怎样才能避免这种情况?

非常感谢

如果您的两个数据框都有同名列,merge() 将在列名后附加 xy 以标识它们来自哪个数据集。

在这里,datacov 中都有一个名为 FIDIID 的列;结果,FID.xIID.x 来自 cov 数据框,FID.yIID.y 来自 data 数据框。

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