• 非结构化数据


    rlist扩展包

    设计目标:更方便地在R中操作list对象

    特性:

    1. 提供一系列高阶函数,可以方便地对list对象中的元素进行映射(mapping)、筛选(filtering)、分组(grouping)、排序(sorting)、合并(joining)、更新(updating)、搜索(searching)以及其他常用操作。
    2. 对管道操作(pipeline)友好,方便非结构化数据处理的流程化。
    3. 整合多种非结构化数据源的读写方法,方便接入数据源和输出数据。
    4. 合理利用R的元编程特性,简化使用。

    基于表达式的用法

    eval(expr,envir,enclos)
    expr        表达式
    envir        计算环境(environment)或参数列表(list)
    enclos        当envir为list时上一级符号搜索环境(environment)
    
    list.map(data,substr(Name,1,1))
    list.filter(data,"reading" %in% Interests)
    
    #rlist高阶函数:分组
    list.group(1:10,.%%2==0)
    
    #rlist高阶函数:分类
    list.class(people,Interests)
    
    #rlist高阶函数:频率表
    list.table(1:1000,.%%3)
    
    #rlist高阶函数:频率表
    list.table(1:1000,.%%3)

    管道操作符:%>>%

    大部分函数的第一个参数都是数据参数

    plot(density(sample(mtcars$mpg,size = 10000,replace = TRUE),
    kernel = "gaussian"),col = "red", main = "density of mpg (bootstrap)")
    
    library(pipeR)
    mtcars$mpg %>>%
      sample(size = 10000,replace = T) %>>%
      density(kernel = "gaussian") %>>%
      plot(col = "red",main = "density of mpg (bootstrap)")

    管道对象:Pipe

    library(pipeR)
    Pipe(mtcars$mpg)$
      sample(size = 10000,replace = T)$
      density(kernel = "gaussian")$
      plot(col = "red", main = "density of mpg (bootstrap)")

    管道函数:pipeline()

    pipeline(mtcars$mpg,
             sample(size = 10000,replace = TRUE),
             density(kernel = "gaussian"),
             plot(col = "red",main = "density of mpg (bootstrap)"))
    
    pipeline({
      mtcars$mpg
      sample(size = 10000,replace = T)
      density(kernel = "gaussian")
      plot(col = "red",main = "density of mpg (bootstrap)")
    })

    数据清洗

    数据清洗:JSON、List、DataFrame

    DataFrame是R中的结构化数据结构,List是R中的非结构化数据。在处理json时,有三种选择,jsonlite、rjson以及RJSONIO。在实际处理字符串中,需要注意R中字符串的转义问题。

    jsonlite

    jsonlite可以一步将json转成DataFrame再从DataFrame转成json,此外,jsonlite还完美支持UTF-8,在json字符串错误时会有明显的错误提示。

    jsonlite的劣势是当出现双层json时,jsonlite会将json转成DataFrame格式的list,这直接导致在用length()或者dim()求内层JSON的维度出现错误。

    jsonlite::fromJSON("{"x":"量化投资","y":"andywu"}")
    $x
    [1] "量化投资"
    
    $y
    [1] "andywu"

    rjson

    rjson和jsonlite最大不同在于,rjson将json转化为一个list,而list是R语言中非结构化数据的事实标准,类似python中的dict,或者MATLAB中的cell。

    rjson在json转化中直接保存所有的浮点型数据,而jsonlite和RJSONIO则可以通过参数控制保留若干位小数的精度。

    RJSONIO

    RJSONIO允许传入没有转移符号的JSON字符串,并且支持将缺失值(NA)直接转成Null,RJSONIO只支持Unicode,不支持UTF-8

    数据处理:List处理

    rlist与高阶函数

    rlist支持高阶函数表达式,借鉴了Python、Scala等语言中的MapReduce模型,rlist也为list提供了map、filter、reduce、group、join、search、sort等高级数据操作。

    rlist扩展包充分利用了R语言中list对象的特性,定义了一整套函数帮助用户灵活快速地按要求处理各种非结构化数据,同时结合pipeR包中管道操作符的使用,使R程序更加具有可读性,应用更加人性化。

    rlist提供的操作:

    数据可视化

    为了方便在R中可视化JSON数据,jsonview将js中的jsonviewer库引入到R中。

    传入list或者json字符串做非结构化数据的可视化


    Copyright © 吴华锦
    雅致寓于高阁渔舟唱晚,古典悠然
    格调外发园林绿树萦绕,馥郁清香
  • 相关阅读:
    将json的时间格式转换成正常的时间格式
    Log4Net
    “我记录”开发框架
    面诊治病图文百科1000问
    手脚治病养生图文百科1000问
    生活真需要:1288个实用偏方
    很老很老的老偏方——对症自疗奇效方全集
    边上班边养生(套装共10册)
    五谷杂粮养生一本全
    现代生活知识百科(全4册)
  • 原文地址:https://www.cnblogs.com/hanqing/p/5479768.html
Copyright © 2020-2023  润新知