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

来源:互联网 发布:淘宝店的发展前景 编辑:程序博客网 时间:2024/05/01 20:00

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

1.什么是长数据?

2.什么是宽数据?

3.为什么需要转换?

4.转换的方法

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

  • 什么是宽数据?
    宽数据是指数据集对所有的变量进行了明确的细分,各变量的值不存在重复循环的情况也无法归类。数据总体的表现为 变量多而观察值少。
    这里写图片描述
    3.为什么需要转换?
    长数据与宽数据之间的转换通常为以下两个原因:

  • 时间序列数据想要观察多个种类的变量在一段时间内的变化,如上例,宽数据格式无法利用ggplot做出图形。

  • 当数据清洗完成后,导入某些软件时,例如导入SPSS软件时宽数据格式会更好。

    4.转换的方法

    • 使用到的包
    • 函数的使用方法
library(tidyr)# 使用的gather & spreadlibrary(reshape2) # 使用的函数 melt & dcast 
#使用gather函数将宽数据gd1转换为长数据gd1_longgd1_long<-gather(gd1,year,gdp,X2015年:X2006年)#使用melt 函数将宽数据gd1转换为长数据gd1_long1gd1_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_widegd1_wide<-spread(gd1_long,year,gdp) #year为需要分解的变量,gdp为分解后的列的取值#使用dcast函数将gd1_long长数据转换为宽数据gd1_wide1gd1_wide1<-dcast(gd1_long1,地区~gd1_long1$year,value.var = 'gdp')