R-根据ID提取行信息

创建数据框,然后根据给定ID提取对应行的信息,特别是给定的ID比较多的时候,其实很简单!

 

> patientID <- c("A","B","C","D")
> age <- c(25,34,44,52)
> DB <- c("T1","T2","T1","T1")
> status <-  c("Poor","Improved","Excellent","Por")
> patientData <- data.frame(patientID,age,DB, status, row.names = patientID)  
##直接赋值行号为patientID,,没有row.names = 参数时,默认为1,2,3,4
##没有加row.names参数时,也可以rownames(
patientData) = patientData[,1]
> patientData
  patientID age DB    status
A         A  25 T1      Poor
B         B  34 T2  Improved
C         C  44 T1 Excellent
D         D  52 T1       Por

然后根据输入的ID提取对应信息

> patientData["D",]
  patientID age DB status
D         D  52 T1    Por
> a = c("A","D","C")  ##这样一来,当ID比较多的时候,可以这样!
> patientData[a,]
  patientID age DB    status
A         A  25 T1      Poor
D         D  52 T1       Por
C         C  44 T1 Excellent

示例如下:

我拿一堆蛋白ID(uniprot的accession,比如Q9DAF3之类的)在DAVID跑了GO和KEGG之后,有69蛋白没有富集到任何BP CC MF或者通路,是一些功能基本没有得到研究的蛋白

这一堆蛋白有的上调有的下调,有文件列出,DAVID输入的是蛋白list,所以输出的69个的没富集的蛋白有哪些是上调哪些是下调的呢?一个个去找肯定不现实

##read.table()的command.char = "X",表示以X开头的行不用读取
setwd("E:/实验/分离manchette/ms/数据处理/") #工作目录定位到当前文件夹
a = read.csv(file = "上下调基因合集.csv",sep =",") #read.csv()默认header= T
View(a)
dim(a)
b = read.csv(file = "DAVID导出的未被富集的69个蛋白ID及其信息.csv",sep = ",") #读取DAVID的输出文件,复制文本,粘贴到excel中后另存为csv文件
c = b$ID #获取这69个ID
rownames(a) = a$ID #修改a文件的行名为为第一列内容
d = a[c,] #利用行名访问行,并取出对应行
View(d)
dim(d)
write.csv(d,file = "69个未分类的蛋白上下调情况.csv",row.names = F) #输出文件时,去掉行名

 

posted @ 2021-01-26 15:40  月光边境Eric  阅读(1004)  评论(0编辑  收藏  举报