• R语言常用数据管理


    1、变量的重命名

    (1)交互式编辑器修改变量名

    若要修改数据集x中的变量名,键入fix(x)即可打开交互式编辑器的界面。若数据集为矩阵或数据框,单击交互式编辑器界面中对应要修改的变量名,可手动输入新的变量名;若数据集为列表,则交互式编辑界面为一个记事本,只要修改“.Names”之后对应的变量名,即可修改变量名。

    (2)rename()函数修改变量名

    可用于修改数据框和列表的变量名,但不能用于修改矩阵的变量名  格式:dataframe<-rename(dataframe,c(oldname="newname",...))

    library(reshape)

    rename(score,c(pl="Chinese"))

    rename(score.list,c(pl="chinese))

    (3)names()函数修改变量名

    可用于修改数据框和列表的变量名,但不能用于修改矩阵的变量名     格式:names()<-value

    names(score)[5]="chinese"

    (4)colnames()函数和rownames()函数修改变量名

    R中用于修改矩阵行名和列名的函数,也可用于修改数据框的行数和列数    格式:colnames(x)<-value   rownames(x)<-value

    rownames(score)<-letters[1:4]

    2、缺失值分析

    is.na(x)——返回一个与x等长的逻辑变量

    anyNA(x,recursive=FALSE)——判断数据中是否存在缺失值 ,若存在就返回TRUE

    na.omit(x)——删除含有缺失值的观测

    complete.cases(x)——返回一个逻辑向量,不存在缺失值的行为值为TRUE

    3、数据排序

    (1)sort ——对向量进行排序,返回排序后的向量

    格式:sort(x,na.last=NA,decreasing=FALSE)

    sort(score$math)

    (2)rank——返回向量中每个数值对应的秩

    格式:rank(x,na.last=TRUE,ties.method=c("average","first","random","max","min"))

    x<-c(3,4,2,5,5,3,8,9)

    rank(x,ties.method="first")

    (3)order——对数据进行排序

    格式:order(x,na.last=TRUE,decreasing=FALSE)

    data_frame[order(data_frame$v2,data_frame$v2,)]

    4、随机抽样

    (1)srswr()——放回简单随机抽样

    格式:srswr(n,N)——表示在总体N中有放回的抽取n个样本,返回一个长度为N的向量,每个向量的值表示抽取的次数

    library(sampling)

    s<-srswr(10,26)

    (2)srswor()——不放回简单随机抽样
    格式:srswor()——表示在总体N中有放回的抽取n个样本,返回一个长度为N的向量,每个向量的值表示抽取的次数

    library(sampling)

    s<-srswor(10,26)

    (3)sample()——实现放回简单抽样和不放回简单随机抽样,也可对数据进行随机分组
    格式:sample(x, size,replace=FALSE,prob=NULL)——随机抽取x中的数,size为抽取样本数,replace=FALSE为不放回简单随机抽样,prob为权重分量
    sample(LETTERS,5,prob=c(0.7,0.3),replace=TRUE)
    5、数值运算函数
    (1)数学函数
    abs(x)、sqrt(x)、ceiling(x)
    (2)统计函数
    mean(x)、median(x)、sd(x)、var(x)、quantile(x,probs)、range(x)、sum(x)、min(x)、max(x)、scale(x,center=TRUE,scale=FALSE)、diff(x,lag=n)
    difftime(time1,time2,units=c("auto","secs","mins","hours","days","weeks"))
    (3)概率函数
    6、字符串函数
    (1)grep()——字符串查询,返回结果为匹配项的下标
    格式:grep(pattern,x,ignore.case=FALSE,perl=FALSE,value=FALSE,fixed=FALSE,useBytes=FALSE,invert=FALSE)
    txt=c("whatever" ,"is","worth","doing","is","worth","doing","well")
    grep("e.*r|wo",txt,fixed=FALSE)
    #返回一个 逻辑向量
    grepl("e.*r|wo",txt,fixed=FALSE)
    #gregexpr()函数   返回一个列表,结果包括匹配项的起始位置及匹配项长度
    grepl("e.*r|wo",txt)
    (2)sub()——对第一个满足条件的匹配做替换
    格式:sub(pattern,replacement,x,ignore.case=FALSE,fixed=FALSE)
    txt=c("whatever" ,"is","worth","doing","is","worth","doing","well")
    sub("[tr]","k",txt)
    (3)gsub()——把所有满足条件的匹配都做替换
    格式:gsub(pattern,replacement,x,ignore.case=FALSE,fixed=FALSE)
    txt=c("whatever" ,"is","worth","doing","is","worth","doing","well")
    gsub("[tr]","k",txt)
    (4)strsplit()——字符串拆分
    格式:strsplit(x,split,fixed=FALSE,perl=FALSE,useBytes=FALSE)
    data<-c("2017年1月1日","2018年1月1日")
    strsplit(data,"年")
    (5)paste()——字符串连接
    格式:paste(...,sep="",collapse=NULL)
    paste("AB",1:5,sep="")
    7、文本分词
    (1)RWordseg包
    常用文本分词函数:insertWords(x,save=TRUE)——向词库中导入新词汇,save=TRUE时,表示把操作记录下来,下回启动能直接用
    deleteWords(x)——从词库中删除词汇
    getOption("isNameRecognition")——查看人名识别功能的状态
    segment.options("isNameRecognition"=TRUE)——设置人名识别功能的状态
    listDict()——查看词典
    installDict()——添加用户自定义的词典
    uninstallDict()——卸载用户自定义的词典
    segmentCN()——中文分词
    (2)jiebaR包
     分词:
    worker()函数初始化分词引擎
    worker(type="mix",dict=DICTPATH,hmm=HMMPATH,user=USERPATH,idf=IDFPATH,stop_word=STOPPATH,write=T,qmax=20,encoding="UTF-8",detect=T,symbol=F,lines=le+0.5.output=NULL,bylines=F)
    初始化分词引擎后,使用分词运算符“<=”或者segment()函数进行分词。
    segment(code,jiebar,mod=NULL)
    library(jiebaR)
    mixseg=worker()                          #默认mix分词引擎
    mpseg=worker(type="mp")          #mp分词引擎
    hmmseg=worker(type="hmm")     #hmm分词引擎

    word="人们都说桂林山水甲天下"

    mixseg<=word

    mpseg<=word

    hmmseg<=word

    segment(word,mixseg)

    词性标注:

    可以使用<=.tagger或者tag来进行分词和词性标注

    关键词提取和Simhash计算:需要将worker()中的type参数设置为“keywords”或“Simhash”,并使用topn参数设置关键词个数

    keys<=worker("keywords",topn=1)

    keys<=word

    8、apply函数族

    (1)apply()——对数组或者矩阵的一个维度使用函数生成列表、数组、或者向量

    格式:apply(x,MARGIN,FUN,...)    MARGIN=1表示矩阵行     MARGIN=2表示矩阵列

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

    x

    apply(x,1,mean)

    (2)lapply()——对x的每一个元素运用函数,生成一个与元素个数相同的值列表

    格式:lapply(x,FUN,...)

    (3)sapply()——对x的每一个元素运用函数,生成一个与元素个数相同的值列表

    格式:sapply(x,FUN,..,simplify=TRUE,USE.NAMES=TRUE)

    (4)tapply()——对不规则阵列使用向量,即对一组非空值按照一组确定因子进行相应计算

    格式:tapply(x,INDEX,FUN,...simplify=TRUE)

    height<-c(174,165,189,180,165)

    sex<-c("M","F","M","M","F")

    tapply(height,sex,mean)

    (5)mapply()

    9、数据整合

    (1)数据汇总统计

    aggregate(x,by,FUN)

    (2)数据融合

    melt(data,varnames,value.name="value",na.rm=FALSE)

    (3)数据重塑

    cast(data,formula,fun.aggregate=NULL,...)

    10、控制流

    (1)if/else语句

    if(condition)  {expr1} else{expr2}

    (2)switch语句

    switch(expression,list)

    (3)循环语句

    for(name in expr1) {expr2}

    while(cond) {expr}

    repeat expr 或repeat{if(cond) {break}}

    11、函数的编写

    myfunction<-function(arglist){

      statements

         return (object)

    }

  • 相关阅读:
    第一个JAVA程序
    python小项目(python实现鉴黄)源码
    整蛊小病毒,自己拿来快乐
    JavaScript(这里主要侧重于 JavaScript HTML DOM)杂项
    图片与文本基础(html和css)
    CSS的基础学习
    Javascript中this作用域以及bind方法的重写
    斐波那契数列算法求解及速度
    javascript中的描述对象(Descriptor)获取和定义随笔
    vue-cli3生产环境和开发环境路径的替换
  • 原文地址:https://www.cnblogs.com/bigdream6/p/8298892.html
Copyright © 2020-2023  润新知