美文网首页R语言作业
R 练习作业(初级)

R 练习作业(初级)

作者: 夏夏LJ | 来源:发表于2019-04-04 15:35 被阅读57次

    title: "R 编程作业(初级)"
    author: "Xiaxia"
    date: "2019年4月3日"
    output: html_document


    knitr::opts_chunk$set(message = FALSE, cache = TRUE)
    

    作业1 工作目录

    getwd()
    

    我在R练习的工作目录就是这个学习目录,还可以用setwd()设置工作目录。

    作业2

    新建向量新建6个向量,基于不同的原子类型。(重点是字符串,数值,逻辑值)

    library(tidyverse)
    chr <- c("r", "learning", "exercise")
    integ <- c(1:12)
    lgc <- integ < 5
    number <- integ/3
    

    如果要解析这些向量,需要使用包tidyverse
    这些是原子向量,还有一些常用的是扩展向量

    # factor
    x <- factor(c("ab", "cd", "ab", "ab"), levels = c("ab", "cd", "ef"))
    attributes(x)
    
    # date
    library(lubridate)
    y <- as.Date("2019-04-02")
    attributes(y)
    z <- ymd_hm("2019-04-02 17:55")
    attributes(z)
    
    #tibble
    #require tidyverse package
    tb <- tibble(integ, lgc)
    tb
    

    作业3

    新建一些数据结构,比如矩阵,数组,数据框,列表等重点是数据框,矩阵)

    # array 
    arr <- array(data = integ, dim = c(3, 4))
    #matrix
    matr <- matrix(data = integ, nrow = 4, ncol = 3, byrow = TRUE )
    # data frame
    df <- data.frame(integ, lgc, number)
    #list
    lst<- list(theme = "R learning", learner = "xiaxia", time = "5 hours")
    
    

    在你新建的数据框进行切片操作,比如首先取第1,3行, 然后取第1, 3列

    dfrow <- df[c(1,3), ]
    dfrow
    dfcol <- dfrow[ , c(1,3)]
    dfcol
    

    作业 4

    使用data函数来加载R内置数据集 rivers 描述它。并且可以查看更多的R语言内置的数据集:https://mp.weixin.qq.com/s/dZPbCXccTzuj0KkOL7R31g

    data("rivers")
    str(rivers)
    class(rivers)
    head(rivers)
    min(rivers)
    

    作业5

    下载 https://www.ncbi.nlm.nih.gov/sra?term=SRP133642 里面的 RunInfo Table 文件读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。(参考B站生信小技巧获取runinfo table) 这是一个单细胞转录组项目的数据,共768个细胞,如果你找不到RunInfo Table 文件,可以点击下载,然后读入你的R里面也可以。

    # download data 
    # the default charater as factor
    options(stringsAsFactors = F)
    sra <- read.table("SraRunTable.txt", header = T, sep = "\t")
    str(sra)
    dim(sra)
    colnames(sra)
    # the default charater as factor
    

    作业6

    下载 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229 里面的样本信息sample.csv读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。(参考 https://mp.weixin.qq.com/s/fbHMNXOdwiQX5BAlci8brA 获取样本信息sample.csv)如果你实在是找不到样本信息文件sample.csv,也可以点击下载。

    GSE <- read.csv("sample.csv", header = T, sep = ",")
    str(GSE)
    dim(GSE)
    colnames(GSE)
    

    作业7

    把前面两个步骤的两个表(RunInfo Table 文件,样本信息sample.csv)关联起来,使用merge函数。
    可以用jion函数吧?如果有两个相同的列就可以

    # Accession merge
    m <- merge(sra, GSE, by.x = 'Sample_Name',by.y = 'Accession')
    str(m)
    # SRX ID jion
    

    下午的可视化操作

    作业8

    对前面读取的 RunInfo Table 文件在R里面探索其MBases列,包括 箱线图(boxplot)和五分位数(fivenum),还有频数图(hist),以及密度图(density) 。

    boxplot(sra$MBases)
    #五数包括中位数,下四分位数、上四分位数,最小值,最大值
    fivenum(sra$MBases, na.rm = T)
    hist(sra$MBases)
    plot(density(sra$MBases))
    

    作业9

    把前面读取的样本信息表格的样本名字根据下划线分割看第3列元素的统计情况。第三列代表该样本所在的plate
    根据plate把关联到的 RunInfo Table 信息的MBases列分组检验是否有统计学显著的差异

    m1 <- m[, c("Title", "MBases")]
    plate = unlist(lapply(m1[,1], function(x){
      x
      strsplit(x, "_")[[1]][3]
    }))
    table(plate)
    t.test(m1[,2] ~ plate)
    

    有显著性差异

    作业10

    分组绘制箱线图(boxplot),频数图(hist),以及密度图(density) 。

    boxplot(m1[,2] ~ plate)
    

    作业11

    使用ggplot2把上面的图进行重新绘制。

    library(ggplot2)
    
    m1 <- m1 %>%
      mutate(plate = plate)
    par(mfrow = c(2, 2))
    ggplot(m1, aes(x = m1$plate, y =m1$MBases, color = plate)) + geom_boxplot()
    ggplot(m1, aes(x = m1$MBases,fill = m1$plate)) +geom_histogram()
    ggplot(m1, aes(x = m1$MBases,fill = m1$plate)) +geom_density()
    

    作业12

    使用ggpubr把上面的图进行重新绘制。没有安装这个包,放弃了

    作业13

    随机取384个MBases信息,跟前面的两个plate的信息组合成新的数据框,第一列是分组,第二列是MBases,总共是384*3行数据。

    m2 <- sample(nrow(m1), 384)
    m3 <- m1[m2,][, c(3, 2, 1)]
    dim(m3)
    str(m3)
    

    相关文章

      网友评论

        本文标题:R 练习作业(初级)

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