阿榜的生信笔记

2023-04-15 11:49:39 浏览数 (2)


title: "生信R"

author: "JB"

date: "2023-04-14"

output: html_document


R Markdown

代码语言:text复制
#重点:数据框
#1.数据框来源
# (1)用代码新建:
                #df1 <- data.frame(gene   = paste0("gene",1:4),
                  #change  = rep(c("up","down"),each = 2),
                #score   = c(5,3,-2,-4))
# (2)由已有数据转换或处理得到:merge(test1,test2,by="name")
# (3)读取表格文件:test=read.table("complete_set.txt",head=T)
# (4)R语言内置数据:iris,letters,volcano
代码语言:text复制
#2.新建和读取数据框,如图所示:
df1 <- data.frame(gene   = paste0("gene",1:4),
                 change  = rep(c("up","down"),each = 2),
                 score   = c(5,3,-2,-4))
df1

![请在此添加图片描述](https://ask8088-private-1251520898.cos.ap-guangzhou.myzijiebao.com/developer-images/article/10480134/k4678fdo63.png?q-sign-algorithm=sha1&q-ak=AKID2uZ1FGBdx1pNgjE3KK4YliPpzyjLZvug&q-sign-time=1681529867;1681537067&q-key-time=1681529867;1681537067&q-header-list=&q-url-param-list=&q-signature=1e2e98a1a0871e222a976b554a994ac49af1d1ed)
代码语言:txt复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down    -2
## 4 gene4   down    -4
代码语言:text复制
df2 <- read.csv("gene.csv")
df2
代码语言:txt复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down    -2
## 4 gene4   down    -4
代码语言:text复制
#3.数据框属性
#dim():行列,nrow():行数,ncol():列数
dim(df1)
代码语言:txt复制
## [1] 4 3
代码语言:text复制
nrow(df1)
代码语言:txt复制
## [1] 4
代码语言:text复制
ncol(df1)
代码语言:txt复制
## [1] 3
代码语言:text复制
#rownames():行名,colnames():列名
rownames(df1)
代码语言:txt复制
## [1] "1" "2" "3" "4"
代码语言:text复制
colnames(df1)
代码语言:txt复制
## [1] "gene"   "change" "score"
代码语言:text复制
#4.数据框取子集
df1$gene  #删掉score,按tab键试试。tab键可以自动补齐工作路径下的文件。
代码语言:txt复制
## [1] "gene1" "gene2" "gene3" "gene4"
代码语言:text复制
mean(df1$score)
代码语言:txt复制
## [1] 0.5
代码语言:text复制
## 按坐标
df1[2,2]
代码语言:txt复制
## [1] "up"
代码语言:text复制
df1[2,]
代码语言:txt复制
##    gene change score
## 2 gene2     up     3
代码语言:text复制
df1[,2]
代码语言:txt复制
## [1] "up"   "up"   "down" "down"
代码语言:text复制
df1[c(1,3),1:2]
代码语言:txt复制
##    gene change
## 1 gene1     up
## 3 gene3   down
代码语言:text复制
## 按名字
df1[,"gene"]
代码语言:txt复制
## [1] "gene1" "gene2" "gene3" "gene4"
代码语言:text复制
df1[,c('gene','change')]
代码语言:txt复制
##    gene change
## 1 gene1     up
## 2 gene2     up
## 3 gene3   down
## 4 gene4   down
代码语言:text复制
## 按条件(逻辑值)
df1[df1$score>0,]
代码语言:txt复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
代码语言:text复制
## 代码思维
#如何取数据框的最后一列?
df1[,3]
代码语言:txt复制
## [1]  5  3 -2 -4
代码语言:text复制
df1[,ncol(df1)]
代码语言:txt复制
## [1]  5  3 -2 -4
代码语言:text复制
#如何取数据框除了最后一列以外的其他列?
df1[,-ncol(df1)]   ##-用于数值型,!用于逻辑值型
代码语言:txt复制
##    gene change
## 1 gene1     up
## 2 gene2     up
## 3 gene3   down
## 4 gene4   down
代码语言:text复制
#筛选score > 0的基因
df1[df1$score > 0,1]
代码语言:txt复制
## [1] "gene1" "gene2"
代码语言:text复制
df1$gene[df1$score > 0]
代码语言:txt复制
## [1] "gene1" "gene2"
代码语言:text复制
#5.数据框修改

#改一个格
df1[3,3] <- 5
df1
代码语言:txt复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down     5
## 4 gene4   down    -4
代码语言:text复制
#改一整列
df1$score <- c(12,23,50,2)     
df1
代码语言:txt复制
##    gene change score
## 1 gene1     up    12
## 2 gene2     up    23
## 3 gene3   down    50
## 4 gene4   down     2
代码语言:text复制
#?
df1$p.value <- c(0.01,0.02,0.07,0.05) 
df1
代码语言:txt复制
##    gene change score p.value
## 1 gene1     up    12    0.01
## 2 gene2     up    23    0.02
## 3 gene3   down    50    0.07
## 4 gene4   down     2    0.05
代码语言:text复制
##列名存在是修改,列名不存在是增加
#改行名和列名,数据框行名列名是向量,按照下面修改进行重新赋值
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"
代码语言:text复制
#6.两个数据框的连接
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                    blood_type = c("A","B","O","AB"))
test1
代码语言:txt复制
##     name blood_type
## 1  jimmy          A
## 2 nicker          B
## 3  Damon          O
## 4 Sophie         AB
代码语言:text复制
test2 <- data.frame(name = c('Damon','jimmy','nicker','tony'),
                    group = c("group1","group1","group2","group2"),
                    vision = c(4.2,4.3,4.9,4.5))
test2
代码语言:txt复制
##     name  group vision
## 1  Damon group1    4.2
## 2  jimmy group1    4.3
## 3 nicker group2    4.9
## 4   tony group2    4.5
代码语言:text复制
test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
                    weight = c(140,145,110,138))
test3
代码语言:txt复制
##     NAME weight
## 1  Damon    140
## 2  jimmy    145
## 3 nicker    110
## 4   tony    138
代码语言:text复制
merge(test1,test2,by="name")
代码语言:txt复制
##     name blood_type  group vision
## 1  Damon          O group1    4.2
## 2  jimmy          A group1    4.3
## 3 nicker          B group2    4.9
代码语言:text复制
merge(test1,test3,by.x = "name",by.y = "NAME")   ##by.x = "name",by.y = "NAME",x、y名字可以不同,但必须一一对应
代码语言:txt复制
##     name blood_type weight
## 1  Damon          O    140
## 2  jimmy          A    145
## 3 nicker          B    110

![请在此添加图片描述](https://ask8088-private-1251520898.cos.ap-guangzhou.myzijiebao.com/developer-images/article/10480134/p6fz5rrswo.png?q-sign-algorithm=sha1&q-ak=AKID2uZ1FGBdx1pNgjE3KK4YliPpzyjLZvug&q-sign-time=1681530081;1681537281&q-key-time=1681530081;1681537281&q-header-list=&q-url-param-list=&q-signature=f12389c1ed056c3900c8bf3b45e8d627fcac1a2d)
代码语言:text复制
##### 矩阵和列表
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m
代码语言:txt复制
##      a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
代码语言:text复制
m[2,]
代码语言:txt复制
## a b c 
## 2 5 8
代码语言:text复制
m[,1]
代码语言:txt复制
## [1] 1 2 3
代码语言:text复制
m[2,3]
代码语言:txt复制
## c 
## 8
代码语言:text复制
m[2:3,1:2]
代码语言:txt复制
##      a b
## [1,] 2 5
## [2,] 3 6
代码语言:text复制
m
代码语言:txt复制
##      a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
代码语言:text复制
t(m)   ##行变列,列变行
代码语言:txt复制
##   [,1] [,2] [,3]
## a    1    2    3
## b    4    5    6
## c    7    8    9
代码语言:text复制
as.data.frame(m)   ##矩阵转化为数据框,但m没有被修改,因为m没有被赋值,只是在控制台上打出来看了下
代码语言:txt复制
##   a b c
## 1 1 4 7
## 2 2 5 8
## 3 3 6 9
代码语言:text复制
pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F)   ##“cluster_cols = F,cluster_rows = F”不聚类
#列表:包含所有的数据类型
l <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, nrow = 2))
代码语言:text复制
l
代码语言:txt复制
## $m1
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## $m2
##      [,1] [,2] [,3] [,4]
## [1,]    2    4    6    8
## [2,]    3    5    7    9
代码语言:text复制
##l取子集两种方法
l[[2]]
代码语言:txt复制
##      [,1] [,2] [,3] [,4]
## [1,]    2    4    6    8
## [2,]    3    5    7    9
代码语言:text复制
l$m1
代码语言:txt复制
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
代码语言:text复制
##画图plot()函数:x轴是默认,y轴是iris[],颜色是col=iris[,5]
plot(iris[,1],col=iris[,5])
代码语言:text复制
plot(iris[,2],col=iris[,5])
代码语言:text复制
plot(iris[,3],col=iris[,5])
代码语言:text复制
x=c(2,5,6,2,9);plot(x)
代码语言:text复制
# 补充:元素的名字
plot(iris[,1:4])
代码语言:text复制
scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
代码语言:txt复制
##  jimmy nicker  Damon Sophie   tony 
##    100     59     73     95     45
代码语言:text复制
scores["jimmy"]
代码语言:txt复制
## jimmy 
##   100
代码语言:text复制
scores[c("jimmy","nicker")]
代码语言:txt复制
##  jimmy nicker 
##    100     59
代码语言:text复制
names(scores)[scores>60]
代码语言:txt复制
## [1] "jimmy"  "Damon"  "Sophie"
代码语言:text复制
# 删除 
rm(l)   ##删除l变量,l是变量,变量不同则()里的字母不同
rm(df1,df2)   ##删除df1,df2变量,df1,df2是变量,变量不同则()里的字母不同
rm(list = ls())   ##清除全部变量
##ctrl l:清空控制台,ctrl z:恢复控制台,ctrl enter:运行

![请在此添加图片描述](https://ask8088-private-1251520898.cos.ap-guangzhou.myzijiebao.com/developer-images/article/10480134/dak2xlqi22.png?q-sign-algorithm=sha1&q-ak=AKID2uZ1FGBdx1pNgjE3KK4YliPpzyjLZvug&q-sign-time=1681530297;1681537497&q-key-time=1681530297;1681537497&q-header-list=&q-url-param-list=&q-signature=800915de6df75792826e3092a4e11fb66955ba16)

引用自生信技能树小洁老师

0 人点赞