美文网首页R语言
R语言实战笔记-1

R语言实战笔记-1

作者: 谢俊飞 | 来源:发表于2018-09-16 17:12 被阅读34次

前言:
微博参与话题 #给你四年时间你也学不会生信#

R存储数据的结构:
标量、向量、数组、数据库、列表
[图片上传失败...(image-d5b409-1537089118428)]
R处理数据类型(模式):
数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)、和原生型(字节)
将类别型(包括名义型和有序型)变量称为因子(factors)

1. 向量

> a <- c(1, 2, 5, 3, 6, -2, 4) #数值型向量
> b <- c("one", "two", "three") #字符型向量
> c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) #逻辑型向量
#单个向量中的数据必须拥有相同的类型或模式

2. 矩阵

矩阵是一个二维数组。只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix创建矩阵。


其中vector包含了矩阵的元素,nrow和ncol来指定行列的维度,选项byrow则表明矩阵应当按行填充(byrow=True)还是按列填充(byrow=False),默认情况下按列填充。dimnames=list()包含了可选的、以字符型向量表示的行名和列名。

> cells    <- c(1,26,24,68)
> rnames   <- c("R1", "R2")
> cnames   <- c("C1", "C2")
> mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE,
+                    dimnames=list(rnames, cnames)) # 默认按列填充,即byrow=FALSE
> mymatrix
   C1 C2
R1  1 26
R2 24 68

3. 数组

数组array与矩阵类似,但是维度可以大于2。

Usage
array(data = NA, dim = length(data), dimnames = NULL)
as.array(x, ...)
is.array(x)

data包含数组中的数据,dimensions是一个数值型向量,给出了各个维度下表的最大值,dimnames是可选的,各维度名称标签的列表。

> # Listing 2.3 - Creating an array
> dim1 <- c("A1", "A2")
> dim2 <- c("B1", "B2", "B3")
> dim3 <- c("C1", "C2", "C3", "C4")
> z <- array(1:24, c(2,3,4), dimnames=list(dim1, dim2, dim3))
> z
, , C1
   B1 B2 B3
A1  1  3  5
A2  2  4  6
, , C2
   B1 B2 B3
A1  7  9 11
A2  8 10 12
, , C3
   B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
   B1 B2 B3
A1 19 21 23
A2 20 22 24

4. 数据框

不同的可以包含不同模式(数值型、字符型)的数据,R中最常处理的数据结构。每一列数据的模式必须唯一,可以将多模式的不同列放到一起组成数据框。

 # Listing 2.4 - Creating a dataframe
> patientID <- c(1, 2, 3, 4)
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> patientdata <- data.frame(patientID, age, diabetes, status)
> patientdata
  patientID age diabetes    status
1         1  25    Type1      Poor
2         2  34    Type2  Improved
3         3  28    Type1 Excellent
4         4  52    Type1      Poor
> patientdata[1:2] #第1、2列
  patientID age
1         1  25
2         2  34
3         3  28
4         4  52

attach()、detach()、with()

> attach(mtcars)
> summary(mpg)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   10.4    15.4    19.2    20.1    22.8    33.9
> plot(mpg,disp)
> plot(mpg, wt)
> detach
#with()以内的对象
> with(mtcars,{ print(summary(mpg))plot(mpg,disp)  plot(mpg, wt) })
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   10.4    15.4    19.2    20.1    22.8    33.9 
#with()以外的对象
> with(mtcars,{ nikeepstats <- summary(mpg) keepstats <<- summary(mpg) })
> nikeepstats
Error: object 'nikeepstats' not found
> keepstats
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   10.4    15.4    19.2    20.1    22.8    33.9 

实例标识符
在R中,可通过数据框操作函数中的rowname选项将对象指定为R中标记各类打印输出和图形中实例名称所用的变量。如:

patientdata <- data.frame(patientID,age,diabetes,status,row.names=patientID)

5. 因子

变量可以归结为名义型(疾病类型)、有序型(患病登记)或连续型变量(年龄)。
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1……k],同时一个由字符串(原始值)组成的内部向量映射到这些整数上。

> patientID <- c(1, 2, 3, 4)
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> diabetes <- factor(diabetes)
> status <- factor(status, order=TRUE)
> patientdata <- data.frame(patientID, age, diabetes, status)
> str(patientdata)
'data.frame':   4 obs. of  4 variables:
 $ patientID: num  1 2 3 4
 $ age      : num  25 34 28 52
 $ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
 $ status   : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3
> summary(patientdata)
   patientID         age        diabetes       status 
 Min.   :1.00   Min.   :25.0   Type1:3   Excellent:1  
 1st Qu.:1.75   1st Qu.:27.2   Type2:1   Improved :1  
 Median :2.50   Median :31.0             Poor     :2  
 Mean   :2.50   Mean   :34.8                          
 3rd Qu.:3.25   3rd Qu.:38.5                          
 Max.   :4.00   Max.   :52.0 

函数factor()可为类别型变量创建值标签。

patientdata$gender <- factor(patientdata$gender, levels = c(1,2) labels =c("male","female"))

6. 列表

列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表。

> g <- "My First List"
> h <- c(25, 26, 18, 39)
> j <- matrix(1:10, nrow=5)
> k <- c("one", "two", "three")
> mylist <- list(title=g, ages=h, j, k)
> mylist
$`title`
[1] "My First List"

$ages
[1] 25 26 18 39

[[3]]
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

[[4]]
[1] "one"   "two"   "three"

数据对象处理函数:

length(object)  #显示对象中元素/成分个数,length("")=1
dim(object) #显示某个对象维度,行数与列数
names(object)   #显示对象中各元素/成分名称 
rm(object1,object2,...) #删除一个或者多个对象
nchar(x)    #计算字符串x的长度,对于非字符对象不能用该函数,nchar("")=0
tian<-c("asd","ngvie","jfvmsdivk"),nchar(tian)的结果为3 5 9
substr(x,from,stop) #提取或者替换字符向量中的子串,substr(x,2,4)<-tuy
substring(x,first,last=100000L) #对字符串x从first到last截取子字符串
toupper(x)   #大写转换
tolower(x)   #小写转换
rbind():#将两个矩阵或数据框按照行来拼接
cbind():#将两个函数或矩阵按照列来拼接
merge():#用于横向合并两个数据框,通过共有变量连接,若某个数据框中的一条记录在该变量的取值在另一个数据框中不存在,该记录就无法找到连接的对象,因此会被删掉。

参考资料1:R数据结构之矩阵
参考资料2:R语言实战

相关文章

  • R 语言实战 读书笔记

    R语言实战(第2版) 学习笔记 1. R语言介绍 1.1 为什么用R语言 bla 1.2 基本操作 图表演示命令 ...

  • R语言实战笔记-1

    前言:微博参与话题 #给你四年时间你也学不会生信# R存储数据的结构:标量、向量、数组、数据库、列表[图片上传失败...

  • 第1章 R语言介绍

    《R语言实战》笔记系列 本章学习大纲 1.R的安装 2.R的基本概念(常用的函数介绍) 3.R的常见错误 第一部分...

  • 第2章 创建数据集

    《R语言实战》笔记系列 本章学习大纲 1.R的数据结构 2.输入数据 3.导入数据 4.标注数据 第一部分 R的数...

  • 数据分析(一): 《R语言实战》

    2016.12.31~2017.01.01开始学习R语言 计划利用元旦3天假期学完《R语言实战》1~7章粗略学习...

  • R语言实战-1入门简介

    今晚开始正式学习R语言实战 1.R语言简介 1.1为何使用R 问问自己为何学习R?为了用文章里画图,为了能生动的展...

  • 推荐关于R的几本书

    推荐几本学习R语言的好书。嘻嘻。 1、数据科学:R语言实战 [美] Dan Toomey(丹·图米) 著;刘丽君,...

  • R语言学习笔记

    R语言学习系列参考书籍:《R语言实战》。 一、入门 1. 工作空间: getwd():查看当前工作目录setwd(...

  • 学习小组Day4笔记--行

    正式开始学习R语言了,今天笔记内容为R语言基础和ggplot2的入门学习 R语言基础 1、认识R与RStudio ...

  • R语言实战—1

    R语言介绍 help("foo")或?foo 查看函数 foo 的帮助(引号可以省略)example(...

网友评论

    本文标题:R语言实战笔记-1

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