学习小组day6---liull

作者: liu_ll | 来源:发表于2018-12-09 12:02 被阅读31次

    今天学到了一个有意思的包,tidyr,方便进行数据的集合和转制用的。虽然我知道在R中的行列转制可以利用t(数据名)进行直接转制。是一个十分强大的函数。可以来实践一下
    1:先生成一个数据框

    b <- data.frame(country = c("A","B","C"),"1999" = paste(c(0.7,37,212),"K"),"2000" = paste(c(2,8,213),"k"))
    
    b的data frame结果图

    但是在敲这个代码的时候,发现了一个bug,归根还是"<-" "="没搞明白

    b <- data.frame(country <-c("A","B","C"),"1999" <- paste(c(0.7,37,212),"K"),"2000" <- paste(c(2,8,213),"k"))
    
    生成了错误的数据框

    在利用t()函数进行转制的时候,写上转制的代码和结果

    t(b)
    
    转制完成的数据框,行和列进行了转制

    -------------------------------------------------------分割线----------------------------------------------
    在这个包中,主要是用2个函数
    gather()
    spread()
    首先先建立一个数据集,利用gather函数,先进行转换

    a <- data.frame(country=c("A","B","C"),"1999"=(c(0.7,37,212),"k"),"2000"=(c(2,80,234),"K"))
    gather(a,"year","value",X1999,X2000)
    gather(b,year,value,-country)
    #这个是除去country之后的效果
    
    gather后的结果,虽然底下有一个warning message
    gather的另一个结果

    二:处理缺失值
    有三种方法,第一种是直接删除用drop()
    第二种是利用上下面的数值猜测一个fill()
    第三种是利用同一列的空值填上一个同一个数,replace_na(data,replace=list,.....)
    1,首先先生成一个含有缺失值的数据框

    f<-gather(b,"year","value",X1999,X2000)
    f[2,3]<- NA
    
    fill(f,value)
    drop_na(f,value)
    replace_na(f,list(value=2))
    
    fill和drop_na的结果
    replace_na的结果

    发现在list里面,替换的值为数字,不能为字符串
    三:complete函数,gather和fill的集合,因为nest的本意有嵌套的意思。nesting里面是什么变量,那么这个变量就是fct因素,其他的因变量。并且可以把空值补全了。


    complete函数运行结果
    四:expand函数

    列出每列值所有可能的组合,类似于排列组合?
    expand(f,country,year,value)


    expand结果
    五:unit函数
    unite(f,year,value,col="year",sep="")
    

    实现对列的一个合并


    unit的合并
    R---tidyr的学习.png

    相关文章

      网友评论

        本文标题:学习小组day6---liull

        本文链接:https://www.haomeiwen.com/subject/ropchqtx.html