登录
首页精彩阅读R语言数据格式长数据和宽数据之间的转换
R语言数据格式长数据和宽数据之间的转换
2018-06-20
收藏

 R语言数据格式长数据和宽数据之间的转换

什么是长数据?

    长数据一般是指数据集中的变量没有做明确的细分,即变量中至少有一个变量中的元素存在值严重重复循环的情况(可以归为几类),表格整体的形状为长方形,即 变量少而观察值多。例如:
    此数据集为随机抽取6个省和其13年到15年的读取GDP,可以看到变量year 为安装时间顺序重复的变量

    什么是宽数据?
    宽数据是指数据集对所有的变量进行了明确的细分,各变量的值不存在重复循环的情况也无法归类。数据总体的表现为 变量多而观察值少。

    3.为什么需要转换?
    长数据与宽数据之间的转换通常为以下两个原因:
    时间序列数据想要观察多个种类的变量在一段时间内的变化,如上例,宽数据格式无法利用ggplot做出图形。
    当数据清洗完成后,导入某些软件时,例如导入SPSS软件时宽数据格式会更好。
    4.转换的方法
        使用到的包
        函数的使用方法
library(tidyr)# 使用的gather & spread
library(reshape2) # 使用的函数 melt & dcast
#使用gather函数将宽数据gd1转换为长数据gd1_long
gd1_long<-gather(gd1,year,gdp,X2015年:X2006年)

#使用melt 函数将宽数据gd1转换为长数据gd1_long1
gd1_long1<-melt(gd1,
                id.vars = c('地区'),#需要保留不参与聚合的变量,
                measure.vars = c('X2015年','X2006年')#用于聚合的变量,
                variable.name='year',
                value.name='gdp')
#ps: id_vars和 measure.vars只需要制定一个即可;另外一个默认是除指定的变量外的所有变量.

#使用spread函数将gd1_long长数据转换为宽数据gd1_wide
gd1_wide<-spread(gd1_long,year,gdp) #year为需要分解的变量,gdp为分解后的列的取值

#使用dcast函数将gd1_long长数据转换为宽数据gd1_wide1

gd1_wide1<-dcast(gd1_long1,地区~gd1_long1$year,value.var = 'gdp')

数据分析咨询请扫描二维码

客服在线
立即咨询