今天学到了一个有意思的包,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
网友评论