没有melt这个函数_R的melt和dcast,兼论宽数据和长数据

处理数据常常会遇到两张数据格式,一种是长数据(long data),另一种是宽数据(wide data)。以常见的股票收盘价数据为例,表1是长数据常见形式,而表2是宽数据常见形式。而R语言作为处理数据的好手,提供了非常多工具来处理这两种数据,以及二者间的转换工具。

接下来首先介绍这两种数据,然后分析二者的优缺点,接着讨论R里面的转换工具melt和dcast函数,最后再对处理方法做一些讨论。

079c55b2f885138de78cfecd0c0373a1.png

两种数据格式的基本介绍

观察表1的数据格式,可以看到长数据例子中,前两列是日期和股票代码,第三列是某日某只股票的收盘价。这类似于数据库里面的主键(primary key),通过前两列定义一个唯一标志符,第三列是标志符对应的值。当然,可以定义更多列作为标志符(例如加入一列数据字段factor,这里是收盘价),而每一个标志符也可以对应更多列数据(例如加入开盘价等),如表3所示。而如果有新的日期或股票数据进来,新增几行即可。

bd33fb479d406b017c30728fa55b5e4e.png

而宽数据则不一样。在表2中,第一列规定了每一行收盘价的日期,每一列规定了收盘价所属的股票。每一个(二维)宽数据对象只能对应一种数据,如果需要另一种数据,例如开盘价,则需要重新做一个这样的表格,第一行和第一列不变,中间的数据值进行调整即可。而如果有一只新上市的股票,则需要新增一列。

除了上述的不同,二者还有一个非常重要的区别就是对缺失值的处理方式。长数据往往不记录缺失值,而宽数据为了保持数据一致性则需要记录。例如金田实业(000003)这只股票在2002年6月14日退市,之后便没有收盘价。如果我们的数据从2000年开始记录所有股票的收

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值