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

R语言基础

  • 4-3 mapply

    mapply:lapply的多元版本  mapply(参数):mapply(函数/函数名,数据,函数相关的参数)

    例:list(rep(1,4),rep(2,3),rep(3,2),rep(4,1))(第1个元素是4个1,第2个元素是3个2)

           mapply(rep,1:4,4:1)(元素是1到4,4:1规定了前面元素要重复多少次)

    定义函数:  s<-function(n,mean,std){rnorm(n,mean,std)}(从随机分布的总体里抽取指定个数的数据)(花括号中意义是从均值为mean,标准差为std的总体里抽取n个数据)

    调用函数:s(4,0,1)(从均值为0,标准差为1的正态分布总体里调用4个数据)

    mapply(s,1:5,5:1,2)(1:5对应的4,即每一次抽取多少个数据出来,5:1对应的0,即分布的均值,2即为分布的标准差)

     同上面的命令:list(s(1,5,2),s(2,4,2),s(3,3,2),s(4,2,2),s(5,1,2))

    查看全部
  • 4-2R语言函数 apply

    apply:沿着数组的某一维度处理数据

    例如:将函数用于矩阵的行或列

    虽然与for/while循环效率相似,但是只用一句话就可以完成

    apply(参数):apply(数组,维度,函数/函数名)

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

             apply(x,2,mean)(对x求列的平均)

             apply(x,2,sum)

    相同于:rowSums(x)  rowMeans(x)

                  colSums(x)   colMeans(x)

           2.x<-matrix(rnorm(100),10,10)(随机从正态分布的总体里抽取100个数据)

              apply(x,1,quantile,probs=c(0.25,0.75))(求25%和75%的百分位点所对应的数据)

           3.x<-array(rnorm(2*3*4),c(2,3,4))(三维数据,维度是2,3,4,第3维是4,即有4个2行3列的矩阵)

              apply(x,c(1,2),mean)(在第1维和第2维组成的平面上,沿着第4维进行求平均)

              apply(x,c(1,3),mean)

              apply(x,c(2,3),mean)

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

    2021-09-25

  • 第4章 重要函数的使用

    4-1 R语言函数 lapply

    处理循环:R不仅有for/while循环语句(特点:需要些多行代码),还有更强大的实现循环的“一句话”函数。

    排序

    总结数据信息

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

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

               结果:总是返回一个列表

    例:1.str(lapply)(其作用是把任意的R对象以一种整洁紧凑的形式显示出来)

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

              lapply(x,mean)

            2.x<-1:4(在lapply内部,会强制转化为列表)

               lapply(x,runif)(从均匀分布的总体里抽取若干个数,默认从0到1之间抽取)

               lapply(x,runif,min=0,max=100)(从0到100之间抽取)

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

               lapply(x,function(m)m[1,])(m为匿名函数,对x中的每一个矩阵都取出它第1行的元素)

    sapply:与lapply非常相似,它可以在允许的情况下对lapply的结果进行化简。结果列表元素长度均为1,返回向量;结果列表长度相同且大于1,返回矩阵;其他情况与lapply相同。

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

              lapply(x,mean)

              sapply(x,mean)


          

    查看全部
  • 3-6向量化操作

    向量化操作(vectorized operation):可以作用于向量、矩阵等结构,使得代码简洁、易于阅读、效率高。

    例:x<-1:5

           y<-6:10

           x+y

           x*y

           x/y

    x<-matrix(1:4,nrow=2,ncol=2)

    y<-matrix(rep(2,4),nrow=2,ncol=2)(把第1个参数重复第2个参数指定的次数)

    x*y

    x/y

    x%*%y(矩阵乘以矩阵)

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

    2021-09-24

  • 3-5处理缺失值

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

    is.na(x)

    x[!is.na(x)] (取x中不是缺失值的部分,!的意思是取反,即真变假)

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

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

    z<-complete.cases(x,y)(运行之后x和y都不是缺失值的位置才会是TRUE)

    然后x[z]  y[z]就可以拿到都不是缺失值的元素

    进一步看complete函数的功能:

    首先加载一下数据集所在的包   library(datasets)

    head(airquality)(看一下数据集)

    通常情况下会选择都没有缺失值的变量  g<-complete.cases(airquality)

    airquality[g,][1:10,](得出的结果是没有缺失值的)

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

    2021-09-24

  • 3-4列表的子集

    构建列表的子集:[[]]/$/[[]][]/[[]][[]]

                               嵌套列表/不完全匹配(partial matching)

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

       x[1](列表中的第1个元素) = x["id"]

       x[[1]](只拿到内容 而不是元素名称加内容)=x[["id"]] = x$id

       y<-"id"

       x[["id"]]=x[[y]] 但不可以直接x$y

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

    x[[1]]        x[[1]][[2]](x第1个元素中第2个元素的内容)

    x[[c(1,3)]](拿到第1个元素中的第2个元素)

    x[[c(2,2)]](拿到第2个元素中的第2个元素)

    不完全匹配:

    l<-list(asdfghj=1:10)

    l$asdfghj=l$a(这就是列表的不完全匹配)

    l[["a"]](精确匹配 结果显示NULL)

    l[["a",exact=FALSE]](后面的函数就关掉了精确匹配)

    x<-list(asdfghj=1:10,b=1:2,aaa=3:5)(当元素名称会造成混淆时R会返回NULL)




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

    2021-09-24

  • 3-3数据框的子集

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

    x$v3[c(2,4)]<-NA(把v3列的第2个和第4个定义成了缺失值)

    x[,2]数据框中的第2列 = x[,"v2"]

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

    x[x$v1>2,]

    x[which(x$v1>2),](which是给出哪些是真)

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

    2021-09-24

  • 3-2矩阵的子集

    构建子集:

    x<-matrix(1:6,nrow=2,ncol=3)

    x[1,2](想拿到第1行第2列的元素)    x[2,3](拿到第2行第3列的元素 )

    x[1,](拿到1整行的数据)  x[,1](拿到1整列的数据)

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

    class(x[1,2])   得到的是向量类型

    x[1,2,drop=FALSE](drop=FLASE函数帮我们关掉了返回向量,返回的是一个矩阵)

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

    2021-09-24

  • 第3章 操纵数据:构建子集(subsetting)

    3-1基本方法

    原始数据(raw dataset)——预处理后的数据(clean dataset)

    基本方法:

    1. []:提取一个或多个类型相同的元素

    2. [[]]:从列表或数据框中提取元素

    3. $:按名字从列表或数据框中提取元素

    补充:R语言的数组下表是从1开始而不是0开始

    例:x<-1:10    x[1] (拿到x的第1个元素)  x[1:5] (拿到x的前5个元素)   x[x>5] (拿大于5的元素)

    x[x>5&x<7]      x[x<3|x>7]

    y<-1:4

    names(y)<-c("a","b","c","d")   y[2]   y["b"](都是拿到y的第2个元素)

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

    2021-09-24

  • 2-8日期与时间

    日期与时间(date,time)

    日期:Date

    x<-date()(获取当前系统的时间)

    x2<-Sys.Date()(获取R中date日期类型的数据)

    x3<-as.Date("2021-09-18")(如何把任意一个日期存储为Date这种类型)

    weekdays(x3)(日期为星期几)

    months(x3)(日期是几月)

    quarters(x3)(日期为一年中哪个季度)

    julian(x3)(日期距离1970-01-01有多少天)

    x4<-as.Date("2016-01-01")

    x4-x3(两个日期的时间差) as.numeric(x4-x3)

    时间:POSIXct/POSIXlt

    POSIXct:整数,常用于存入数据框

    POSIXlt:列表,还包含星期、年、月、日等信息

    x<-Sys.time()(获取当前系统的时间)

    p<-as.POSIXlt(x)(类型之间的转换)

    names(unclass(p))(lt的类型中存了哪些变量,使用unclass,把内容留下 把属性去掉)

    p$sec(看一下有多少秒 秒是变量之一)

    如何把以不同格式表示的字符串转换成我们想要的类型:

    例:x1<-"Jan 1, 2015 01:01"

    strptime(x1,"%B %d %Y %H:%M")

    查看全部
  • 2-7数据框

    数据框(data frame):存储表格数据(tabular data),我们可以把数据框当成一种列表形式,其中各元素的长度是相同的(1.每个元素代表一列数据 2.每个元素的长度代表行数 3.元素类型可以不同)

    如何创建一个数据框:

    df<-data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,TRUE,FALSE,FALSE))(第一个参数代表第一列的内容,第二个参数代表第二列的内容)

    nrow(df)

    ncol(df)

    df2<-data.frame(id=c(1,2,3,4),score=c(80,86,90,100))

    data.matrix(df2)(将数据框转化为矩阵)

    http://img1.sycdn.imooc.com//6144a67000013d7d10000421.jpg

    查看全部
  • 2-7数据框

    数据框(data frame):存储表格数据(tabular data),我们可以把数据框当成一种列表形式,其中各元素的长度是相同的(1.每个元素代表一列数据 2.每个元素的长度代表行数 3.元素类型可以不同)

    如何创建一个数据框:

    df<-data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,TRUE,FALSE,FALSE))(第一个参数代表第一列的内容,第二个参数代表第二列的内容)

    nrow(df)

    ncol(df)

    df2<-data.frame(id=c(1,2,3,4),score=c(80,86,90,100))

    data.matrix(df2)(将数据框转化为矩阵)

    查看全部
  • 2-6缺失值

    缺失值(missing value):NA/NaN

                                            NaN属于NA,NA不属于NaN,因为NaN一般用来表示数字的缺失值,而NA                                            可以表示的缺失值的类型更广,如数字的缺失值,字符的缺失值等。此外,NA                                          是有类型属性的:integer NA, character NA 等

    如果要判断一个向量中是否有缺失值:is.na()/is.nan()

    例如:x<-c(1,NA,2,NA,3)

              is.na(x)

              is.nan(x)  印证了x不属于nan,也印证了NaN判断不出NA

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

              is.na(x)

              is.nan(x)

    查看全部
  • 2-5  factor

    因子(factor):分类数据(有序/无序)

                            可以理解为整数型向量+标签(label)(优于整数向量)

    Male/Female vs.1/2

    常用于lm(),glm()

    创建因子:

    x<-factor(c("female","female","male","male","female"))

    y<-factor(c("female","female","male","male","female"),levels=c("male","female"))(levels是因子的属性,谁在前谁是基线水平)

    table(x)对当前因子有整体性的了解

    unclass(x)去掉因子的属性

    class(unclass(x))查看unclass(x)的属性

    查看全部
  • 2-4列表

    列表(list):可以包含不同类型的对象

    创建列表:1.l<-list("a",2,10L,3+4i,TRUE)

                     2.l2<-list(a=1,b=2,c=3)(给列表里的元素命名)

                     3.l3<-list(c(1,2,3),c(4,5,6,7))(列表中每一个元素包含的元素大于1的列表)

                     4.给矩阵的每一行每一列命名:

                      x<-matrix(1:6,nrow=2,ncol=3)

                      dimnames(x)<-list(c("a","b"),c("c","d","e"))

    查看全部

举报

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

微信扫码,参与3人拼团

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

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