查看: 204|回复: 0

[R语言] R语言入门之长宽数据转换

[复制链接]
  • TA的每日心情
    害羞
    前天 11:34
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    中华鲟

    Rank: 5Rank: 5

    主题
    40
    奥币
    1884
    积分
    618
    注册时间
    2018.7.19
    在线时间
    49 小时

    热心会员活跃会员


    发表于 2019.6.23 23:26:55 | 显示全部楼层 |阅读模式
    本帖最后由 胖虎 于 2019.6.23 23:26 编辑

    R语言中为了方便作图和计算,常常需要对数据进行长宽数据转换。那么什么是长数据,什么是宽数据呢?


    什么是长数据?
    长数据一般是指数据集中的变量没有做明确的细分,即变量中至少有一个变量中的元素存在值严重重复循环的情况(可以归为几类),表格整体的形状为长方形,即变量少而观察值多。例如:


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


    为什么要进行转换?
    长数据与宽数据之间的转换通常为以下两个原因:
    ·       时间序列数据想要观察多个种类的变量在一段时间内的变化,如上例,宽数据格式无法利用ggplot做出图形。
    ·       当数据清洗完成后,导入某些软件时,例如导入SPSS软件时宽数据格式会更好。
    如何转换?
    1,宽数据转换为长数据。
    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png

    long <- melt(data = mydata,
                id.vars = c("Name","Company"),#要保留的主字段
                ariable.name = "Year",#转换后的分类字段名称(维度)
               value.name = "Sale" #转换后的度量值名称
           )

    2,长数据转换为宽数据

    wide <- dcast(
      data=long,
      Name+ Company~Year#左侧是要保留的字段,右侧是要分割的分类变量,列数等于表达式,右侧分类变量的类别个数
    )


    同时,使用dcast()函数还可对数据进行汇总。
    dcast(data = long, formula = Name~.,fun.aggregate = mean, value.var = 'Sale')

    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    评分

    参与人数 1奥币 +5 收起 理由
    基迪奥-李泽标 + 5 鼓励分享

    查看全部评分

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表