前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据框、矩阵和列表20230202

数据框、矩阵和列表20230202

原创
作者头像
顾卿岚
发布2023-02-03 11:59:58
1.1K0
发布2023-02-03 11:59:58
举报

一、向量、矩阵、数据框和列表的区别

1)向量:一维

2)矩阵:二维,只允许一种数据类型

3)数据框:二维,每列只允许一种数据类型

4)列表:容纳各种数据类型

ps:数据类型的判断:clss()

数据类型的转化:as.data.frame/ as.matrix

二、数据框

(1)数据框的来源:

a 新建

b as.data.frame转化

c 读取表格文件 read.csv()

d 内置数据集如 iris,mtcars

(2)新建数据框:

1、data.frame()

2、read.csv(" ") ⚠️文件在当前的工作路径中可以直接使用文件名,否则需要使用绝对路径,否则就会报错。

(3)数据框的属性

获得行数 nrow()

获得列数 ncol()

获得行名 rownames()

获得列名 colnames()

(4)数据框取子集

>数据框名称 $ 列名 eg. df1$gene

可以直接选择相应列
可以直接选择相应列

#按坐标 df1[2,2] 取出一个格子

#按行. df1[1, ] 后面空取一行

#按列. df1[ ,2] 前面空取一列

#某几行,几列.

代码语言:javascript
复制
> df1
   
gene       change score
1 gene1     up     5
2 gene2     up     3

3 gene3   down    -2

4 gene4   down    -4

> df1[c(1,3),1:2]
  
 gene      change

 1 gene1     up

 3 gene3   down

(取了第一、三行的1~2列)

‼️使用取子集的方法筛选

eg:筛选score大于0的行

代码语言:txt
复制
> df1[df1$score>0,]  
 gene      change score
 1 gene1     up     5
 2 gene2     up     3

(先按逻辑取子集,T对应的行留下,F对应的删掉)

(5)数据框修改

1、改一个格

代码语言:javascript
复制
> df1[3,3]<-5
> df1
  
 gene      change score

 1 gene1     up     5

 2 gene2     up     3

 3 gene3   down     5

 4 gene4   down    -4

(先使用中括号取出来再赋值)

2、改一整列

代码语言:javascript
复制
> 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

(使用💲取出一列重新赋值)

3、增加一列

代码语言:javascript
复制
> 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

(💲后加上要增加新列的列名)

4、修改行名和列名

行名修改:rownames(数据框的名称)<-c() #重新赋值

名列名修改:colnames(数据框的名称)<-c()

改一个行名或列名: colnames(数据框名称)[列数]<-"重命名 "

rownames(数据框名称)[行数]<-"重命名"

5、数据框的连接

(新建数据框)

代码语言:javascript
复制
> test1<-data.frame(name=c("jimmy","niker","Damon","Sophie"),blood_type=c("A","B","O","AB"))
> test1
name          blood_type

1  jimmy          A

2  niker          B

3  Damon          O

4 Sophie          AB

> test2<-data.frame(NAME=c("Damon","jimmy","niker","tony"),weight=c(140,145,110,138))

> test2
  
 NAME      weight
 
1 Damon    140

 2 jimmy    145
 
3 niker    110
 
4  tony    138

(连接数据框,根据共有的列名, by.x写第一个列名,by.y写第二个)

代码语言:javascript
复制
> merge(test1,test2,by.x = "name",by.y = "NAME")
  
 name       blood_type weight
 1 Damon          O    140
 2 jimmy          A    145

 3 niker          B    110

三、矩阵

(1)新建和取子集

matrix(1:n,nrow=, nco=) ⚠️默认数据按列先排列,若要按行排列,记得输入byrow=TRUE

eg:

代码语言:javascript
复制
 > m<-matrix(1:9,nrow = 3,ncol = 3)
 > m
     
       [,1] [,2] [,3]

 [1,]    1    4    7
 
[2,]    2    5    8

 [3,]    3    6    9

(2)转置(行变列,列变行)

t(矩阵名称)

eg:

代码语言:javascript
复制
> t(m)
     
      [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

[3,]    7    8    9

(3)矩阵和数据框的转化

as.data.frame()

as.matrix()

最后用class() 明确一下数据类型

(4)矩阵画热图

默认聚类,也可以修改默认值不需要聚类
默认聚类,也可以修改默认值不需要聚类

四、列表

(1)列表的新建

代码语言:javascript
复制
> l<-list(m1=matrix(1:9,3,3),m2=matrix(2:9,2,4))
> l

$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

❓当把"m1="换成"m1<-" ,$m1 会变成 [[1]]

⚠️(2)列表的取子集(注意数据类型)

l[1] 取出数据是列表

l[[1]] / l 💲m1 取出数据是matrix或array

代码语言:javascript
复制
> class(l[1])

[1] "list"
> class(l[[1]])
[1] "matrix" "array" 

> class(l$m1)

[1] "matrix" "array"

补充知识点

1)元素的命名(使用names给向量命名)

代码语言:javascript
复制
> 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

‼️names()是对向量的命名,即加上名字的属性,并不是加了一行,class(scores)还是numeric的向量!!

a 使用名称查找 scores["jimmy"]

b 筛选出分数大于60的名字 names(scores)[scores>60]

代码语言:javascript
复制
> names(scores)[scores>60]
[1] "jimmy"  "Damon"  "Sophie"

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、向量、矩阵、数据框和列表的区别
  • 二、数据框
    • (1)数据框的来源:
      • (2)新建数据框:
        • (3)数据框的属性
          • (4)数据框取子集
            • (1)新建和取子集
            • (2)转置(行变列,列变行)
            • (3)矩阵和数据框的转化
            • (4)矩阵画热图
            • (1)列表的新建
            • ⚠️(2)列表的取子集(注意数据类型)
        • 三、矩阵
        • 四、列表
        • 补充知识点
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档