zoukankan      html  css  js  c++  java
  • R语言学习笔记(四)

    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个日期

  • 相关阅读:
    【Java】快速排序、归并排序、堆排序、基数排序实现总结
    【Java】二分查找、插值查找、斐波那契查找的实现,及分析
    【Java】Java实现常见的七种排序
    【C】常见的排序
    栈,迷宫问题
    海量数据处理问题
    【C】 布隆过滤器BloomFilter
    哈希变形---位图
    C实现Hash表,链式结构
    C实现Hash表,开放定址法
  • 原文地址:https://www.cnblogs.com/triple-y/p/9392827.html
Copyright © 2011-2022 走看看