R语言作业之两个文件中相同列匹配加文件合并

 

  冬至快到了,祝大家快乐,今天要和大家分享的是:在R语言中,如何将两个文件中样本名称相同的列匹配并且将相同的样本名称的其余信息一起匹配合并。

 首先我们今天要讲的是:有两个文件里面都有一列ID,表示的是样本的名称,接下来介绍一下:第一个文件夹里面包括三列,分别表示样本名称(ID),生存时间和生存状态。

第二个文件里面包括了样本名称(ID)和基因表达量和此样本是肿瘤还是正常组织。

  接下来我们的目的就是要将两个文件中样本名称(ID)那一列中具有相同的样本名的样本找到,并将相同的样本的生存时间和生存状态以及对应的基因表达量和该样本是否是正常还是肿瘤也一起标记出来。

好了,明确了需求,如何做呢:我们接下来要准备两个输入文件,就是上面提到的两个文件,接下来接就是要设置一下这两个文件所在的工作目录,然后读取这两个文件,将这两个文件读取出来,存在两个变量里,存好以后,在转换为两个矩阵,转换为矩阵后,在使用嵌套的两个for循环就能完成上述需求了。

以下是运行结果:

 以下是运行的原代码。

  setwd("C:\\Users\\HP\\Desktop\\12.14GEO\\091GENHEBING") #首先设置一个工作目录

 first<-read.table("singleGene.txt",sep="\t",header=T,check.names=F) #读取文件

    first<-data.frame(first)#将这个变量转化为数据框的格式。

    rs123456761<-read.table("Time.txt",header=T)#利用read.table函数读取这个文件,有表头,并且对表头不进行检查。

    rs123456761<-data.frame(rs123456761)#同上。

   nrow(rs123456761)#求这个变量里的行数。

   nrow(first)

  substring(rs123456761[1,1],1,12)#利用substring这个函数求这个数据框中的数据中的第一行第一列中的第一位到第十二位。

  substring(first[1,1],1,12)

  #同上。接下来是利用一个for循环嵌套一个for循环的形式,来筛选具有相同  id的样本,

#并将具有相同样本id的其他信息进行合并。

for (i in 1:nrow(rs123456761)) {

#num1 <- as.numeric(substring(rs123456761[i,1],1,12))

num1 <- substring(rs123456761[i,1],1,12)

for(t in 1:nrow(first) ){

num2 <- substring(first[t,1],1,12)

#num2 <- as.numeric(substring(first[ ,1],1,12))

#substring的用法,这是元素获取。metadata为行名数据框,通过substring损坏依次提取各行第一列(即行名)第14、15位数字,这句话写的很好。1-9为肿瘤,10-20为control sample,判断是否为肿瘤。

#as.numeric可把"01"-"09"变为1-9,用数值比较。

if ( num1== num2) {

first[t,4]<- rs123456761[i,2]

first[t,5]<- rs123456761[i,3]

}

}

  最后:各位小伙伴,觉得内容对你有帮助,记得顺手点个赞和在看哟,你小小的点赞和在看永远是我持续写作的动力,谢谢你。

你可能感兴趣的:(R语言作业之两个文件中相同列匹配加文件合并)