美文网首页
创建R的数据格式

创建R的数据格式

作者: Bioinfor生信云 | 来源:发表于2022-07-01 21:47 被阅读0次

R软件自带了很多数据集(data set),并附有这些数据集的分析和绘图示例,可在学习R语言时使用。用data()函数可查看R软件的自带数据集输入数据集的名称可查看该数据,用help(数据集名称)可查看该数据集的详细信息。比如,要查看泰坦尼克号的数据,输入Titanic即可,要查看该数据的详细信息,输入help(Titanic)或“?Titanic”即可。
用R软件分析数据或创建一个图形时,首先要有分析或绘图的数据集。R语言处理的数据集类型包括向量、矩阵、数组、数据框、因子和列表。

向量、矩阵和数组

向量

向量是一个一维数组,是R语言的原子类型。在R中录入一个向量需要用c函数。

创建向量

v1 <- c(1,2,3,4,5)   #数值型向量
v2 <- c("chr1","chr2","chr3")  #字符型向量
v3 <- c("TURE","FALSE")  #逻辑型向量

快速创建连续的整数向量

1:5

快速创建重复的向量

rep(3,10)

取值

向量的索引也是一个向量

按位置

向量的位置是从1开始

v1[1:3]
[1] 1 2 3
v1[-c(1,4)]
[1] 2 3 5

按逻辑

v[v%%2==0]
[1] 2 4

按名称

names(v1) <- c('chr1','chr2','chr3','chr4','chr5')
chr1 chr2 chr3 chr4 chr5 
   1    2    3    4    5

计算

v1+1
chr1 chr2 chr3 chr4 chr5 
   2    3    4    5    6 

矩阵

矩阵是一个二维数组,其中的每个元素都是相同的数据类型。用matrix函数可以创建矩阵。

a <- 1:6   #生成1-6的数值向量
mat <- matrix(a, #创建向量a的数值矩阵
              nrow = 2, #矩阵的行数为2
              ncol = 3, #矩阵的列数为3
              byrow = TRUE) #按行填充矩阵的元素

mat
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

给矩阵添加行名和列名

rownames(mat)=c('chr1','chr2') #行名
colnames(mat)=c('A','B','C') #列名

 mat
     A B C
chr1 1 2 3
chr2 4 5 6

转置

t(mat)
  chr1 chr2
A    1    4
B    2    5
C    3    6

数组

数组与矩阵类似,但维数可以大于2,使用array函数可以创建数组。

#创建一个2x3x4的数组
dim1<-c('A','B') #指定第一个维度为2个元素
dim2<-c('gene1','gene2','gene3') #指定第一个维度为3个元素
dim3<-c('chr1','chr2','chr3','chr4') #指定第一个维度为4个元素
data<-round(runif(24,50,100)) #生成24个均匀分布的随机数并取整
d<-array(data,c(2,3,4),dimnames=list(dim1,dim2,dim3)) #创建数值并赋值给对象d

d
, , chr1

  gene1 gene2 gene3
A    51    64    66
B    64    62    81

, , chr2

  gene1 gene2 gene3
A    72    78    59
B    85    68    85

, , chr3

  gene1 gene2 gene3
A    78    96    86
B    92    71    93

, , chr4

  gene1 gene2 gene3
A    66    82    50
B    89    57    87

数据框

创建

使用data.frame函数可以创建数据框,数据框的每一列叫做变量,每一行叫做观测值。

df <- data.frame(S1 = c(1, 2, 3, 4, 5),
                 S2 = c(5, 4, 3, 2, 1),
                 S3 = runif(5, -10, 10), #-10到10之间生成5个数
                 S4 = runif(5, -10, 10))

df
  S1 S2        S3         S4
1  1  5  4.285124 -4.4689417
2  2  4 -4.664863 -0.6102111
3  3  3 -2.872251 -3.7848300
4  4  2  2.064181 -6.9652761
5  5  1  9.594043  0.5476802

colnames(df) #查看列名
rownames(df) #查看行名
ncol(df) #查看列数
nrow(df) #查看行数
dim(df) #查看行数和列数
head(df, n = 2) #查看前2行
rownames(df) <- c('gene1','gene2','gene3','gene4','gene5')
df
      S1 S2        S3         S4
gene1  1  5  4.285124 -4.4689417
gene2  2  4 -4.664863 -0.6102111
gene3  3  3 -2.872251 -3.7848300
gene4  4  2  2.064181 -6.9652761
gene5  5  1  9.594043  0.5476802

取值

提取变量

返回一个向量
df$S1
[1] 1 2 3 4 5

df[2,2]
[1] 4

按位置

df[1:3,1:3]
      S1 S2        S3
gene1  1  5  4.285124
gene2  2  4 -4.664863
gene3  3  3 -2.872251

按名称

df[c('gene1', 'gene3'),c('S1', 'S2')]
      S1 S2
gene1  1  5
gene3  3  3

按逻辑

筛选S1中表达大于1的基因,只选择S2和S4两列

subset(df, S1>1, select = c('S2','S4'))
      S2         S4
gene2  4 -0.6102111
gene3  3 -3.7848300
gene4  2 -6.9652761
gene5  1  0.5476802

计算

与向量计算

head(df + c(1,2))
      S1 S2        S3         S4
gene1  2  7  5.285124 -2.4689417
gene2  4  5 -2.664863  0.3897889
gene3  4  5 -1.872251 -1.7848300
gene4  6  3  4.064181 -5.9652761
gene5  6  3 10.594043  2.5476802

按行和列计算

rowSums(df)
colSums(df)
rowMeans(df)
colMeans(df)
#也可以使用apply函数按行或列进行计算
apply(df, 1, mean)

数据框的合并

如果需要合并不同的数据框,使用rbind函数可以将不同的数据框按行合并;使用cbind函数可以将不同的数据框按列合并。但需要注意,按行合并时,数据框中的列变量必须相同;按列合并时,数据框中的行变量必须相同,否则合并是没有意义的。

数据框的排序

sort(df$S3, decreasing = TRUE) #降序排列
[1]  9.594043  4.285124  2.064181 -2.872251 -4.664863

如果要对整个数据库中的数据排序,可以使用dplyr R包。

按照S3升序排列
arrange(df, S3)
      S1 S2        S3         S4
gene2  2  4 -4.664863 -0.6102111
gene3  3  3 -2.872251 -3.7848300
gene4  4  2  2.064181 -6.9652761
gene1  1  5  4.285124 -4.4689417
gene5  5  1  9.594043  0.5476802

按照S4降序排列
arrange(df, desc(S4))
      S1 S2        S3         S4
gene5  5  1  9.594043  0.5476802
gene2  2  4 -4.664863 -0.6102111
gene3  3  3 -2.872251 -3.7848300
gene1  1  5  4.285124 -4.4689417
gene4  4  2  2.064181 -6.9652761

因子和列表

因子

类别变量在R软件中称为因子(factor),因子的取值称为水平(level)。很多分析或绘图都可以按照因子的水平进行分类处理。
使用factor函数可以将向量编码为因子。

#将无序因子转换为数值
g <- c('生物','物理','化学','生物')  #因子向量g
f <- factor(g) #将向量g编码为因子
 f
[1] 生物 物理 化学 生物
Levels: 化学 生物 物理
as.numeric(f) #将因子g转换为数值
[1] 2 3 1 2

列表

列表是一些对象的集合,它是R软件中较复杂的形式,一个列表中可能包含若干向量、矩阵、数据框等。使用list函数可以创建列表

数据类型

数值型

a <- c(1, -2, 3.53)
b <- c(1, 3, 4.5)

round(a, digits = 1) #四舍五入到指定小数
abs(a) #绝对值
aqrt(a) #开平方
sum(a) #求和
sd(a) #求标准差
a * b
a ** b 
a / b #相除
a %% b #整除求余
cor(a, b) #求相关性

字符型

s <- c('A', 'BB', 'CCC', 'DDDD' )
 library(stringr, quietly = T) #使用stringr进行字符串处理
str_count(s, 'B') #计数
[1] 0 2 0 0
str_sub(s, 1, 3) #按位置切分
[1] "A"   "BB"  "CCC" "DDD"
str_subset(s, 'D') #包含D的元素
[1] "DDDD"
str_length(s) #求长度
[1] 1 2 3 4
str_replace(s,'A', 'E') #替换
[1] "E"    "BB"   "CCC"  "DDDD"
str_to_lower(s) #转小写
[1] "a"    "bb"   "ccc"  "dddd"
str_c(c('chr1','chr2','chr3','chr4'),s,sep = ':') #连接
[1] "chr1:A"    "chr2:BB"   "chr3:CCC"  "chr4:DDDD"
str_split(s,'',simplify = T) #拆分
     [,1] [,2] [,3] [,4]
[1,] "A"  ""   ""   ""  
[2,] "B"  "B"  ""   ""  
[3,] "C"  "C"  "C"  ""  
[4,] "D"  "D"  "D"  "D" 
str_sort(s) #排序
[1] "A"    "BB"   "CCC"  "DDDD"

逻辑型

x <- c(T,F,T)
y <- c(F,F,F)
x | y # 或 
[1]  TRUE FALSE  TRUE
x | | y # 或
 [1] TRUE
x & y #与
[1] FALSE FALSE FALSE
x && y $与
[1] FALSE
!x #非
[1] FALSE  TRUE FALSE

喜欢就点个赞吧!

相关文章

  • 创建R的数据格式

    R软件自带了很多数据集(data set),并附有这些数据集的分析和绘图示例,可在学习R语言时使用。用data()...

  • R语言-05数据框创建,以及按条件取数据框数据

    创建数据框 数据框是R语言的一种基础数据格式,通常excel等表格形式数据读入后都是数据框格式。 下例创建了一个3...

  • 保存R中的数据

    R语言中内置了两种数据格式,除了将数据导出为我们常用的.xls、.csv外,使用R内置的数据格式可以方便以后的再次...

  • 基因突变瀑布图的绘制

    本期主要介绍使用R的GenVisR包绘制突变瀑布图。 要求输入的数据格式:   GenVisR包支持现成的数据格式...

  • R数据格式转换

    刘小泽写于2018.8.27-28我们日常使用R一般不会使用它的编程工作(即写R包的任务),许许多多的的生信函数、...

  • R语言长短数据转换

    R数据格式转换tidyr包:reshape2的替代者,功能更纯粹R 学习笔记:tidyr 包整理数据的利器 gat...

  • Hive | 加载数据后,出现字段显示为 NULL的问题

    问题一: 加载数据后,查询数据,字段显示为NULL 解决方法:加载的数据,它的数据格式要与创建表的字段数据格式保持...

  • SharedPreference与MMKV

    SharedPreference 数据格式 XML格式保存,使用Pull解析 初始化 创建SharedPrefer...

  • 使用conda安装R

    1. 创建R的环境 `conda create -n R4.1.1 创建名为R4.1.1的环境(可以根据自己的喜欢...

  • R包安装

    一)创建一个新的R环境 conda create -n R4.2 # 创建名为R3.5的环境 source act...

网友评论

      本文标题:创建R的数据格式

      本文链接:https://www.haomeiwen.com/subject/uaaavrtx.html