我正在尝试合并两个数据集。两者都具有相同的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”?我怎么能避免这个?
非常感谢
答案 0 :(得分:1)
如果您的两个数据框都有相同名称的列,merge()
会在列名称附加x
或y
,以确定他们来自哪个数据集。
此处,您在FID
和IID
中都有一个名为data
和cov
的列;因此,FID.x
和IID.x
来自cov
数据框,FID.y
和IID.y
来自data
数据框。
通过在两个数据集中使用唯一的列名来避免这种情况。