title: "day3note"
output: html_document
date: "2024-03-08"
#重点:数据框
新建数据框
#赋值 #列名
df1 <- data.frame(gene = paste0("gene",1:4),
change = rep(c("up","down"),each = 2),
score = c(5,3,-2,-4))
df1
## gene change score
## 1 gene1 up 5
## 2 gene2 up 3
## 3 gene3 down -2
## 4 gene4 down -4
从文件读取
df2 <- read.csv("gene.csv")
df2
dim(df1) #行和列
## [1] 4 3
nrow(df1) #行
## [1] 4
ncol(df1) #列
## [1] 3
#
rownames(df1) #行名
## [1] "1" "2" "3" "4"
colnames(df1) #列名
## [1] "gene" "change" "score"
$ #取列
df1$score #删掉score,按tab键试试
mean(df1$score)
df1[2,2]
## [1] "up"
df1[2,] #取第2行所有列
## gene change score
## 2 gene2 up 3
df1[,2]
## [1] "up" "up" "down" "down"
df1[c(1,3),1:2] #取第一行和第三行,第一列到第二列
## gene change
## 1 gene1 up
## 3 gene3 down
df1[,"gene"]
## [1] "gene1" "gene2" "gene3" "gene4"
df1[,c('gene','change')]
## gene change
## 1 gene1 up
## 2 gene2 up
## 3 gene3 down
## 4 gene4 down
#改一个格
df1[3,3] <- 5
df1
## gene change score
## 1 gene1 up 5
## 2 gene2 up 3
## 3 gene3 down 5
## 4 gene4 down -4
#改一整列
df1$score <- c(12,23,50,2)
df1
## gene change score
## 1 gene1 up 12
## 2 gene2 up 23
## 3 gene3 down 50
## 4 gene4 down 2
#?
df1$p.value <- c(0.01,0.02,0.07,0.05)
df1
## 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
小提示:哪个是修改,哪个是增加一列?
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE" #第二列列名改为CHANGE
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'),
blood_type = c("A","B","O","AB"))
test1
## name blood_type
## 1 jimmy A
## 2 nicker B
## 3 Damon O
## 4 Sophie AB
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
## name group vision
## 1 Damon group1 4.2
## 2 jimmy group1 4.3
## 3 nicker group2 4.9
## 4 tony group2 4.5
test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
weight = c(140,145,110,138))
test3
## NAME weight
## 1 Damon 140
## 2 jimmy 145
## 3 nicker 110
## 4 tony 138
merge(test1,test2,by="name")
## name blood_type group vision
## 1 Damon O group1 4.2
## 2 jimmy A group1 4.3
## 3 nicker B group2 4.9
merge(test1,test3,by.x = "name",by.y = "NAME")
## name blood_type weight
## 1 Damon O 140
## 2 jimmy A 145
## 3 nicker B 110
m <- matrix(1:9, nrow = 3) #将一个矩阵3行9个元素赋值给m
colnames(m) <- c("a","b","c") #加列名
m
## a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
m[2,]
## a b c
## 2 5 8
m[,1]
## [1] 1 2 3
m[2,3]
## c
## 8
m[2:3,1:2] #取m2到3行,1到2列
## a b
## [1,] 2 5
## [2,] 3 6
并没有,因为没有赋值,r语言任何修改都要赋值,没赋值就等于没发生过
m
## a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
t(m) #转置m
## [,1] [,2] [,3]
## a 1 2 3
## b 4 5 6
## c 7 8 9
as.data.frame(m)
## a b c
## 1 1 4 7
## 2 2 5 8
## 3 3 6 9
x <- list(m1 = matrix(1:9, nrow = 3),
m2 = matrix(2:9, nrow = 2))
x
## $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
x[[1]]
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
x[[""]]
x$m1
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
## jimmy nicker Damon Sophie tony
## 100 59 73 95 45
scores["jimmy"]
## jimmy
## 100
scores[c("jimmy","nicker")]
## jimmy nicker
## 100 59
names(scores)[scores>60]
## [1] "jimmy" "Damon" "Sophie"
df1 <- data.frame(gene = paste0("gene",1:4),
change = rep(c("up","down"),each = 2),
score = c(5,3,-2,-4))
k = df1$score>0;k #将score>0的列取出来
## [1] TRUE TRUE FALSE FALSE
df1[k,] #将score>0的行取出来
## gene change score
## 1 gene1 up 5
## 2 gene2 up 3
df1[k,1] #将score这列的score>0的行取出来
## [1] "gene1" "gene2"
df1$gene[k]#gene这列的score>0的行取出来
## [1] "gene1" "gene2"
df1$gene[df1$score>0]
## [1] "gene1" "gene2"
rm(x) #删除一个
rm(df1,df2) #删除多个
rm(list = ls()) #删除全部
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。