工作笔记记录,会持续更新....

目录:

  • apply
  • tapply
  • lapply
  • sapply
  • merge
  • substr、substring、strsplit、unlist、paste、paste0、nchar
  • table

apply函数:


  • apply:apply的中文意思是应用,这个函数的意思是通过将一个函数应用到矩阵或数组中,返回一个向量或数组
  • 语法:apply(X, MARGIN, FUN, ...)  , 其中X为一个数组;MARGIN为一个向量(表示要将函数FUN应用到X的行还是列),1:表示取行,2:表示取列,c(1,2)表示行、列都计算。
  • 示例:
    > ma <- matrix(c(1:4, 1, 6:8), nrow = 2);ma
    [,1] [,2] [,3] [,4]
    [1,] 1 3 1 7
    [2,] 2 4 6 8 > apply(ma, 1, sum)
    [1] 12 20
    > apply(ma, 2, sum)
    [1] 3 7 7 15

tapply:


  • tapply:是对向量中的数据进行分组处理,而非对整体数据进行处理
  • 语法: tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE),
    1. 其中X通常是一向量;
    2. INDEX是一个list对象,且该list中的每一个元素都是与X有同样长度的因子;
    3. FUN是需要计算的函数;
    4. simplify是逻辑变量,TRUE(默认值),且函数FUN的计算结果总是为一个标量值,那么函数tapply返回一个数组;若取值为FALSE,则函数tapply的返回值为一个list对象。需要注意的是,当第二个参数INDEX不是因子时,函数 tapply() 同样有效,因为必要时 R 会用 as.factor()把参数强制转换成因子
  • 示例:
    > da
    year province sale
    1 2007 A 1
    2 2007 B 2
    3 2007 C 3
    4 2007 D 4
    5 2008 A 5
    6 2008 C 6
    7 2008 D 7
    8 2009 B 8
    9 2009 C 9
    10 2009 D 10
    > attach(da)
    > tapply(sale,list(year,province),mean)
    A B C D
    2007 1 2 3 4
    2008 5 NA 6 7
    2009 NA 8 9 10

lapply:


  • lapply: (list apply)针对list的apply函数
  • 语法: lapply(X, FUN, ...)   lapply的返回值是和一个和X有相同的长度的list对象,这个list对象中的每个元素是将函数FUN应用到X的每一个元素
  • 示例:
    #外卖示例数据
    s<-data.frame(shop_id=c('',''),saled=c(35,78),
    takeout_cost=c(30,60),delivery_time=c(10,20)) lapply(s,function(x){
    if(is.numeric(x)){
    mean(x)
    }
    else{
    length(x)
    }
    })
  • 结果:$shop_id [1] 2 $saled [1] 56.5 $takeout_cost [1] 45 $delivery_time [1] 15

sapply:


  • sapply:sapply函数和Lapply函数类似,也是对List进行处理,只是在返回结果上,sapply会根据结果的数据类型和结构,重新构建一个合理的数据类型返回
  • 语法:sapply(X, FUN,..., simplify = TRUE, USE.NAMES = TRUE)
  • 示例:如上例,调用sapply函数返回结果为:
    shop_id      saled  takeout_cost delivery_time
    2.0 56.5 45.0 15.0

merge:


  • merge: merge是R语言中用来合并数据框的函数
  • 语法:merge(x, y, by = intersect(names(x), names(y)),  by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,  sort = TRUE, suffixes = c(".x",".y"), incomparables = NULL, ...)
    1. x,y:用于合并的两个数据框
    2. by.x,by.y:指定依据哪些行合并数据框,默认值为相同列名的列.
    3. all.x,all.y:指定x和y的行是否应该全在输出文件
    4. sort:by指定的列是否要排序
    5. suffixes:指定除by外相同列名的后缀
    6. incomparables:指定by中哪些单元不进行合并
  • 示例代码:
    #数据:
    w1:
    NAME SCHOOL CLASS ENGLISH
    A S1 10 85
    B S2 5 50
    A S1 4 90
    A S1 11 90
    C S1 1 12 w2:
    NAME SCHOOL CLASS MATHS ENGLISH
    A S3 5 80 88
    B S2 5 89 81
    C S1 1 55 32 merge(w1, w2, all = T) NAME SCHOOL CLASS ENGLISH MATHS
    1 A S1 4 90 NA
    2 A S1 10 85 NA
    3 A S1 11 90 NA
    4 A S3 5 88 80
    5 B S2 5 50 NA
    6 B S2 5 81 89
    7 C S1 1 12 NA
    8 C S1 1 32 55 merge(w1, w2, by = c("NAME", "SCHOOL", "CLASS"), all = T) NAME SCHOOL CLASS ENGLISH.x MATHS ENGLISH.y
    1 A S1 4 90 NA NA
    2 A S1 10 85 NA NA
    3 A S1 11 90 NA NA
    4 A S3 5 NA 80 88
    5 B S2 5 50 89 81
    6 C S1 1 12 55 32

substr、substring、strsplit、unlist、paste、paste0、nchar:


  • substr、substring: 取子字符串
    1. substr(x,start,stop)   : 必须指定开始和结束位置
    2. substring(text, first, last=1000000 ) :substring()可以不用指定结束位置,默认为1000000,如果字符串的长度小于1000000,则默认为取到字符串的结尾处
    3. 示例: substring("sinablog",5)  【blog】  substr("sinablog",5,10)  【blog]
  • strsplit、unlist:
    1. strsplit(x, split, extended = TRUE, fixed = FALSE, perl = FALSE) x为待拆分的字符串向量,split拆分模式, fixed为TRUE表示精确匹配
    2. 使用split函数得到的结果是一个列表,如果希望得到一个向量,可以使用unlist函数
    3. 示例: unlist(strsplit("a.b.c", "\\.")) 结果:[1] "a" "b" "c"
  • nchar: 取字符长度,示例: x<-"sinablog"    > nchar(x)      结果:[1] 8
  • paste、paste0:
    1. paste在不指定分割符的情况下,默认分割符是空格, paste0在不指定分割符的情况下,默认分割符是空
    2. > paste("Hello","world")    [1] "Hello world"
      > paste0("Hello","world")   [1] "Helloworld"

table:


    • table 对应的就是统计学中的列联表,是一种记录频数的方法。看示例

      > x <- sample(c("a", "b", "c"), 100, replace=TRUE)
      > names(table(x))
      [1] "a" "b" "c"
      > as.numeric(table(x))
      [1] 32 33 35
      > #转data.frame
      > as.data.frame(table(x))
      x Freq
      1 a 32
      2 b 33
      3 c 35

R(五): R常用函数的更多相关文章

  1. R语言:常用函数【转】

    数据结构 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量 character:字符型向量list:列表 data.frame:数据框 c:连接为向量或列表len ...

  2. SQL Server(五)——常用函数

    1.数学函数:操作一个数据,返回一个结果 --取上限ceiling select code,name,ceiling(price) from car ; --取下限 floor select floo ...

  3. Python 学习笔记(五)常用函数

    Python内建函数 四舍五入: round() 绝对值: abs() >>> round(1.543,2) 保留两位小数,四舍五入为1.54 1.54 >>> r ...

  4. SQL Server(五)——常用函数 转

    1.数学函数:操作一个数据,返回一个结果 --取上限ceiling select code,name,ceiling(price) from car ; --取下限 floor select floo ...

  5. 【R】R语言常用函数

    R语言常用函数 基本 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量character:字符型向量 list:列表 data.frame:数据框c:连接为向量或 ...

  6. R的变量类型和常用函数

    一.R的变量类型 也可以说是数据存储方式,有: Vector: 一维阵列 Matrics: 二维阵列,其中所有元素是同一数据类型. factor: 种类变量,可使用levels函数来规定种类变量的各级 ...

  7. R语言数据读入函数read.table

    1.read.table:可以读TXT也可以读CSV (1)file:文件名 (2)header:是否包含表头 (3)sep:分隔符,如果不设定默认是空格 (4)dec:标志小数点符号,有些国家的小数 ...

  8. R语言中apply函数

    前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言 ...

  9. R语言——基本绘图函数

    通过一个综合的例子测试绘图函数 学习的内容是tigerfish老师的教程. 第一节:基本知识 用seq函数产生100位学生的学号. > num = seq(,) > num [] [] [ ...

随机推荐

  1. java学习第七天

    目标 1.  复合 2.  继承 3.  重写 4.  Super 5.  final 一.类与类的关系 参考: http://www.cnblogs.com/liuling/archive/2013 ...

  2. 关于OC队列

    GCD中有三种队列类型: The main queue: 与主线程功能相同.实际上,提交至main queue的任务会在主线程中执行.main queue可以调用dispatch_get_main_q ...

  3. linux的ftp使用方法

    linux下常用FTP命令 1. 连接ftp服务器 以下是在服务器为Ubuntu环境下操作: (1)首先需要安装vsftp软件,已经安装的可跳过. 1.更新软件源 #apt-get  update 2 ...

  4. yii表单

    yii  的dropdownlist,用yii的session可以记下选中的状态 $form = $this->beginWidget('CActiveForm',array('action'= ...

  5. 【Better Code】repeat

    <JavaScript 框架设计> 版本1: function repeat(target, n) { return (new Array(n + 1)).join(target) } 版 ...

  6. iOS学习笔记---oc语言第五天

    字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...

  7. dll清理

    結束了閉關,又得與人類交流了,只好裝QQ 印象中企鵝手腳一向是BAT中最乾淨的-結果還是裝了不少樂色,一併挖出來除之   C:\program files\common files\tencent\q ...

  8. Android多分辨率适配经验总结

      Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应 ...

  9. zoj3623 Battle Ships ——完全背包?简单DP!|| 泛化背包

    link:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3623 看起来像完全背包,但是物品价值是变化的,所以很多人搞的很复 ...

  10. Android 客户端和服务器 json交互

    http://www.cnblogs.com/jyan/articles/2544974.html 1.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. ...