为了账号安全,请及时绑定邮箱和手机立即绑定

R语言基础

  • 提取符合多个条件的元素:& 并且;| 或者

    查看全部
    0 采集 收起 来源:基本方法

    2018-09-26

  • x[x>5]  #提取符合条件的元素

    查看全部
    0 采集 收起 来源:基本方法

    2018-09-26

  • summarize data

    head(airquality,10)  #默认值是6

    tail(airquality)

    summary(airquality) #返回每一个值中最大最小,25%分为点 ,75%分为点,中位数,均值,缺失值存在个数个数

    summary函数让我们对数据的分布有一个整体的把握

    table(airquality$Ozone,useNA="ifany") #如果有缺失值,要总结出信息

    table(airquality$Month, airquality$Day)  #table可以对两个变量进行总结, 得到一个二维表,月份是行,日期是列,内容是出现记录的次数


    any(is.na(airquality $ Ozone ))  # 如果返回值是TRUE,说明一定有缺失值

    sum(is.na(airquality $ Ozone)) # 缺失值的总数

    all(airquality$Month<12)  #判断是否所有月份都小于12


    #泰坦尼克表

    titanic<-as.data.frame(Titanic)

    head(titanic)

    dim(titanic)

    summary(titanic)


    交叉:

    x<- xtabs(Freq ~ Class + Age, data=titanic)

    ftable(x) #排版更加扁平化


    object.size(airquality)

    print(object.size(airquality), units="Kb")


    查看全部
    0 采集 收起 来源:总结数据信息

    2018-09-14

  • sort: 对向量进行排序,返回排好序的内容

    order: 返回排好序的内容的下标,多个排序标准(返回值是对应“排名”的元素所在向量中的位置)

    sort(x)

    sort(x, decreasing=TRUE)  降序排列


    查看全部
  • split(向量/列表/数据框, 因子/因子列表)

     x <- c(rnorm(5), runif(5),rnorm(5,1))  

    f <- gl(3,5)

    split(x,f)

    #split函数返回了一个列表,第一个名称是1,对应水平1对应的x中前五个元素,水平2对应x中间五个元素,水平3对应x后五个元素

    lapply(split(x,f) , mean)

    split函数主要用于将一组数据以一定的规则分组并返回一个list。

    split(x, f)

    • x: 一个待分组的向量或者data frame

    • f: 一个factor或者list(如果list中元素交互作用于分组中),以此为规则将x分组

    rm是remove的意思,例如你指定na.rm=T,就会移除na数据



    查看全部
    0 采集 收起 来源:R语言函数 split

    2018-09-14

  • tapply(向量,因子/因子列表,函数/函数名)

    f<-gl(3,5)  #3个水平,每个水平五个连续数

    gl(k,n,length=,label=)构造一个因子序列。k为水平数,n为每个水平连续出现的次数,length为整个序列的长度,label为因子标签。
    举例:gl(3,5,length=20,label=c('a','b','c'))

    tapply(x, f, mean) # 输出x前五个数据均值,中间五个数据均值,后五个数据均值

    tapply(x,f ,mean,simplify=FALSE)  #输出没有简化的列表



    查看全部
  • mapply(函数/函数名称,函数数据,函数相关参数)

    list (rep(1:4), rep(2,3), rep(3,2), rep(4:1))

    mapply(rep, 1:4, 4:1)  #4:1 规定数据要重复多少次

    s<-function(n, mean, std){

         rnorm(n,mean,std)

    }        #从均值为mean,标准差为std的整体里抽取n个数据

    s(4,0,1) # 从均值为0,标准差为1的整理里抽取四个数据

    mapply(s, 1:5, 5:1, 2)  #1:5  对应着n,每次在分布中抽取多少个数据出来 / 5;1 对应着mean,均值为多少 /  2代表std标注差




    查看全部
  • #apply

    x<-matrix(1:16, 4,4 )

    apply(x,2 mean) # 沿着x的第二维度求平均,x有两个维度,行和列,第二个维度就是沿着x的列求平均

    apply(x,2, sum) # 沿着x的第二维度求和

    rowSum(x) / rowMean(x)

    colSum(x) / colMean(x)


    x2<-matrix(rnorm(100), 10, 10 )  #随机从正太分布的整体里抽出100个数据

    x<- rnorm(100)       #产生100个服从正态分布的随机数

    x<-rnorm(100,3,4)       #产生100个均值是3,标准差为4的随机数

    apply(x2, 1, quantile, probs=c(0.25,0.75 ))  


    x3<-array(rnorm(2*3*4), c(2,3,4 ))

    apply(x, c(1,2), mean)  #在第一维和第二维组成的平面上,沿着第三维求平均







    查看全部
    0 采集 收起 来源:R语言函数 apply

    2018-09-13

  • 循环函数

    lapply:可以循环处理列表中每一个元素

    lapply(列表,函数/函数名,其他参数)

    x<-list(a=c(1:10)), b=c(11,21,31,41,51))

    lapply(x, mean)


    x2<-1:4  #创建一个向量x2

    lapply( x2, runif ) #runif函数(r + unif):从一个均匀分布的整体里,抽取若干个数出来

    R语言生成均匀分布随机数的函数是runif()

    句法是:runif(n,min=0,max=1)    n表示生成的随机数数量,min表示均匀分布的下限,max表示均匀分布的上限;若省略参数min、max,则默认生成[0,1]上的均匀分布随机数。


    lapply(x2, runif,min=0,max=100)

    x3<-list(a=matrix(1:6,2,3), b=matrix(4:7),2,2 )

    lapply(x3, function(m) m[1, ])

    #函数function返回x3中每个矩阵的第一行


    #sapply函数 能够化简lapply

    x返回值从列表简化成向量,并不影响理解








    查看全部
  • #vectorized

    y<-matrix(rep(2,4),nrow=2,ncol=2)  #rep函数作用是把第一个参数重复四次。

    x %*%y   #得到两个向量相乘


    查看全部
    0 采集 收起 来源:向量化操作

    2018-09-13

  • x<-c(1,NA,2,NA,3)

    is.na(x) # 返回逻辑向量 FALSE TRUE FALSE TRUE FALSE

    (FALSE代表不是缺失值,TRUE代表是缺失值)

    x[!is.na(x)]  #运行后得到 1 2 3,向量中不是缺失值的元素

    x<-c(1,NA,2,NA,3)

    y<-c("a","b",NA,"c",NA)

    z<-complete.cases(x,y)   #选取那些对应位置都不是缺失值的元素,

    x[z]    #得到x,y里都不是缺失值的元素

    y[z]    #得到x,y里都不是缺失值的元素


    用R自带的数据集来展示complete函数的功能:

    library(datasets)  #加载一个datasets的包,这个包里包含了很多现成的数据集,找到airquality这个数据集,可以查看airquality这个数据集中有哪些变量

    head(airquality)  # 展示前六行, 一行代表一个记录,一列代表一个变量,选择在所有变量上都没有缺失值的记录

    g<-complete.cases(airquality)

    airquality[g, ][1: 10, ]










    查看全部
    0 采集 收起 来源:处理缺失值

    2018-09-13

  • subset of list

    [[]] /  $ /   [[]][[]]  /   [[]][]

    嵌套列表中的元素以及不完全匹配(partial matching)

    x<-list(id=1:4, height=170, gender="male")

    x[1]  #运行之后得到列表中的第一个元素 名字:id,内容: 1 2 3 4

    x["id"] # 结果一样

    x[1]x["id"] 可以拿到列表中某一个元素,输入下标or输入元素名称

    list如果只是用一对[],只能拿到元素的名字,不能拿到内容,

    想直接拿到列表中某一个元素的内容,要使用嵌套的方括号 x [ [ 1 ] ], 同理可以输入x[["id"]]

    也可以输入:x$id, 输出结果同样是1,2,3,4的内容

    x[c(1,3)] # 拿到list中第一个元素和它的内容,以及第三个元素和它的内容

    y<-"id"

    x[["id"]] 和 x[[y]] 返回值都是1 2 3 4,

    但是!!!: x$id 和 x$y(返回值为NULL)


    列表中获取嵌套的元素

    x2<-list (a=list(1,2,3,4), b=c("Monday","Tuesday"))

    x2[[1]] [[2]]  #拿到列表x2 第一个元素中的第二个元素内容

    x2[[1]][2]   #拿到的是子列表中的第二个元素,而不是第二个元素的内容

    x2[[c(1,3)]]  #列表中第一个元素中的第三个元素,拿到内容3

    x2[[c(2,3)]] #列表中第二个元素中的第二个元素,拿到内容"Tuesday"

    总结:想获得嵌套列表中的内容,可通过[[]][[]] or [[c()]]获得

    #partial matching

    l<-list(asdfgh= 1:10)

    l$asdfgh

    l$a #也可以匹配

    但是l[["a"]] 为空NULL,因为在我们的列表中,没有返回值为a的元素

    l[["a", exact = FALSE ]] #关掉了精确匹配,就可以进行不完全匹配了









    查看全部
    0 采集 收起 来源:列表的子集

    2018-09-12

  • x<-data.frame(v1=1:5, v2=6:10, v3= 11:15)

    x$v3[c(2,4) ]<-NA  #第三列的第二行第四行设为缺失值

    x[,2]

    x[, "v2"]

    x[ ( x$v1<4 $ x$v2>=8) , ]

    x[ x$v1 >2, ]  #返回 v1那一行全部大于2的行,全部列

    x[ which(x$v1 > 2),  ]  # 返回值一样

    which( x$ v1 >2)  #f返回3,4,5. 告诉我们第三行第四行第五行使我们想要的,which返回的是向量中为真的元素值的下标

    x$v1>2  # 不套which返回的是真假的逻辑判断向量,3,4,5是真,1,2是假


    subset(x,x$v1>2)




    查看全部
    0 采集 收起 来源:数据框的子集

    2018-09-12

  • 矩阵的子集:矩阵有两个维度,行和列,因此要拿到某个特定元素,需要指明第几行,第几列,

    x[1,2]拿到第一行,第二列的元素

    x[1,] 拿到第一行一整行的数据,列为空

    x[2,c(1,3)] 拿到第二行,第一列和第三列的元素

    class(x[1,2]) 返回值为integer,说明返回的是一个向量vector

    如果想返回一个矩阵,而不是一个向量,需要传入第三个参数:

    x[1,2,drop=FALSE], 这个参数帮助我们关掉了返回向量这个选择,保证返回的是一个矩阵,矩阵会把行列都列出来,然后才是元素。向量只会列出元素。




    查看全部
    0 采集 收起 来源:矩阵的子集

    2018-09-12

  • raw dataset ——clean dataset

    构建子集的方法1:[] 方括号,提取一个或多个same type elements

    方法2:[[]] 两个方括号嵌套,从list or data frame中提取elements

    方法3:$符号,按名字从list or df中提取elements

    例如:创建向量x

    x<-1:10

    x[1] #想拿到第一个元素 请注意:R语言和C的区别是,R数组下标从1开始,C从0开始

    x[5] #拿到第五个元素

    x[1:5] #拿到前五个元素


    有时候需要逻辑判断的条件,拿到子集

    x[x>5]

    直接输入x>5, 会对每个元素进行判断,结果用F or T的方式输出

    x[x>5 & x<7]

    x[x<3 | x>7]

    给元素命名:

    y<-1:4

    names(y)<-c("a","b","c","d")

    y[2] or y["b"]

    使用名字来找到数据是一种常用的手段,因为有时候我们不知道想要的收据的下标是什么,但是知道元素的名字






    查看全部
    0 采集 收起 来源:基本方法

    2018-09-12

举报

0/150
提交
取消
课程须知
本课程需要学员提前掌握 安装好R和Rstudio
老师告诉你能学到什么?
1、R语言的数据结构 2、构建数据子集 3、重要函数的使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!