6. 数据转换

本章主要讲述apply系列函数:apply、lapply、sapply、tapply、mapply,以及姊妹函数by、split。适用于批量处理数据,而不许循环。

6.1 向量分组

用因子(分组因子)来标识元素的不同组:

> groups <—split(x, f)             //x<—c(40,29,39),f<—factor(c(“A”,”B”,”A”))

返回的是一个向量列表,列表中每个向量包含属于同一组的元素

> groups <—unstack(data.frame(x,f))         //返回的是由向量列表转换成的数据框

6.2 将函数应用于每个列表的元素

> lst <—lapply(lst, function)          //返回列表形式

> vec <—sapply(lst, function)        //如果可能返回向量形式

6.3 将函数应用于矩阵的每一行

> results <—apply(mat, 1, function)            //mat是矩阵,1是指逐行

返回结果是一个向量

6.4 将函数应用于矩阵或数据框的每一列

> results <—apply(mat, 2, function)            //mat是矩阵,2是指逐列

> lst <—lapply(dfrm, function)                    //dfrm是数据框,逐列运算

> vec <—sapply(dfrm, function)

如果当数据框中元素是同质的话,也可以用apply。

6.5 将函数应用于组数据

> tapply(x,f, function)              //将函数应用于每组数据

6.6 将函数应用于行组

> by(dfrm,fact, function)        //因子fact识别dfrm中每行所属类别,函数function的参数应该是一个数据框,by把行放入一个临时数据框,然后调用function。

6.7 将函数应用于平行向量或列表

> mapply(gcd,c(1,2,3), c(9,6,3))           //分别求(1,9)(2,6)(3,3)的最大公约数

gcd是求两个数的最大公约数,其参数是纯量,而非向量化的。

7. 字符串和日期

日期和时间的类:Date、POSIXct、POSIXlt、chron、lubridate、mondate、timeDate

7.1 获取字符串长度

> nchar(“Moe”)         //结果是3

>length(“Moe”)        //结果是1,不是求的字符串长度

7.2 连接字符串

> paste(“Everybody”,“loves”, “stats.”)

> paste(“Everybody”,“loves”, “stats.”, sep=”-”)  //连接的中间间隔为“-”

> paste(vec,“loves”, “stats.”)         //vec中每个元素分别和后面字符串相连

> paste(vec,“loves”, “stats.”, collapse=”,and ”)   //顶级分隔符

7.3 提取子串

> substr(“Statistics”,1, 4)         //提取从第1个元素开始到第4个结束的子串

> cities<— c(“New York, NY”, “Los Angeles, CA”, “Peoria, IL”)

>substr(cities, nchar(cities)-1, nchar(cities))      //结果是”NY””CA” “IL”

7.4 根据分隔符分割字符串

> strsplit(string,delimiter)      //delimiter是一个简单字符串或正则表达式

7.5 替代字符串

> sub(old,new, string)             //替代第一个子串

> gsub(old,new, string)           //替代所有子串

7.6 查看字符串中的特殊字符

用cat输不出时,用print就好

7.7 生成字符串的所有成对组合(笛卡尔积)

> m <—outer(string1, string2, paste, sep=”-”)         //sep是连接符

7.8 得到当前日期

> Sys.Date()

7.9 转换字符串为日期

> as.Date(“2014-10-23”)

>as.Date(“10/23/2014”, format=”%m/%d/%y”)       //不确定Date的格式时的方法

7.10 转换日期为字符串

> format(Sys.Date())

>as.character(Sys.Date())                                   //按默认格式

> format(Sys.Date(),format=” %m/%d/%Y”)      //规定输出字符串格式,注意”/”、”Y”

7.11 转换年、月、日为日期

> ISOdate(year,month, day)                  //POSIXct对象,该函数可以处理向量数据

> as.Date(ISOdate(year,month, day))   //转换为Date对象

7.12 得到儒略日期

儒略日期是指从某个任意起始点以来的天数,R中的起始点是1970年1月1日

>as.integer(as.Date(“2014-10-23”))

>julian(as.Date(“2014-10-23”))            //方法2,同时输出起始点

7.13 提取日期的一部分

> p <— as.POSIXlt(as.Date(“2014-10-23”))         //日期、时间对象

> p$mday                   //指定日期对应的该月中的天数(1~31)

> p$sec                       //秒数(0~61)

> p$min                      //分钟数(0~59)

> p$hour                     //小时(0~23)

> p$mon                     //月份(0~11)

> p$year                     //年份(自1900起)

> p$wday                    //该周的某一天(0~6,Sunday=0)

> p$yday                     //该年的某一天(0~365)

> p$isdst                     //夏时令标记

7.14 创建日期序列

> seq(from=s,to=e, by=1)               //s和e分别是起始、结束日期

> seq(from=2,by=”month”, length.out=7)          //列出7个日期

R语言学习笔记(四)的更多相关文章

  1. Go语言学习笔记四: 运算符

    Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...

  2. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  3. R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...

  4. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

  5. R语言学习笔记:小试R环境

    买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...

  6. R语言学习笔记︱Echarts与R的可视化包——地区地图

    笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...

  7. R语言学习笔记(五)绘图(1)

      R是一个惊艳的图形构建平台,这也是R语言的强大之处.本文将分享R语言简单的绘图命令.   本文所使用的数据或者来自R语言自带的数据(mtcars)或者自行创建.   首先,让我们来看一个简单例子: ...

  8. R语言学习笔记:基础知识

    1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...

  9. R语言学习笔记:使用reshape2包实现整合与重构

    R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...

  10. R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//")> setwd("e:\桌面\")> s ...

随机推荐

  1. .net中动态对象的使用

    js中的写法: var list = []; var o = {}; o.id = '111'; o.name = '222'; list.push(o); c#中的写法: var aList = n ...

  2. 【bzoj3670】[Noi2014]动物园

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2080  Solved: 1107[Submit][Status ...

  3. css-三边框,外边距和内边距

    <div style="width:100px;height:50px;border: solid black 1px;position: absolute;right: 500px; ...

  4. AntD02 Table组件的使用

    1 前提准备 1.1 创建一个angular项目 1.2 将 Ant Design 整合到 Angular 项目中 1.3 官方文档 点击前往 2 简单使用 <nz-table #rowSele ...

  5. mybatis 框架 的应用之四(一对一 与 一对多)

    lf-driver=com.mysql.jdbc.Driver lf-url=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&u ...

  6. 1、 Shiro框架:认证,授权(验权 2. Shiro框架实现权限控制方式:

    1. Shiro框架:认证,授权(验权) a) 认证逻辑:applicationCode—>通过工具类获取subject对象,调用login方法参数令牌信息->安全管理器------> ...

  7. adb shell unauthorized问题

    出现unauthorized 一般插上usb后,手机会弹出一个要求你授权debugging的对话框,如果没有的话,就是rsa_key有问题: /adb_keys. User-installed key ...

  8. c语言实践 用1角 2角 5角 凑成10元钱的方法

    /* 用1角,2角,5角凑出10元钱,有几种办法. 也就是0.1a+0.2b+0.3c=10,化简一下就是 a=100-2b-3c 因为a的范围是0到100,所以弄一个循环 把a的值从0尝试到100, ...

  9. servlet模板

    package ${enclosing_package};import java.io.IOException;import javax.servlet.ServletException;import ...

  10. window7 下配置python2.7+tornado3.3开发环境

    玩python的人大都在linux下进行开发,由于长期习惯在windows下开发代码,今天蛋疼尝试在window7下配置python2.7+tornado3.3开发环境,必然的中间遇到各种报错,但是最 ...