R语言学习笔记(十七):data.table包中melt与dcast函数的使用
melt函数可以将宽数据转化为长数据
dcast函数可以将长数据转化为宽数据
> DT = fread("melt_default.csv")
> DT
family_id age_mother dob_child1 dob_child2 dob_child3
1: 1 30 1998-11-26 2000-01-29 NA
2: 2 27 1996-06-22 NA NA
3: 3 26 2002-07-11 2004-04-05 2007-09-02
4: 4 32 2004-10-10 2009-08-27 2012-07-21
5: 5 29 2000-12-05 2005-02-28 NA
> DT.m1 <- melt(DT, measure.vars = c("dob_child1", "dob_child2", "dob_child3"),
+ variable.name = "child", value.name = "dob")
> DT.m1
family_id age_mother child dob
1: 1 30 dob_child1 1998-11-26
2: 2 27 dob_child1 1996-06-22
3: 3 26 dob_child1 2002-07-11
4: 4 32 dob_child1 2004-10-10
5: 5 29 dob_child1 2000-12-05
6: 1 30 dob_child2 2000-01-29
7: 2 27 dob_child2 NA
8: 3 26 dob_child2 2004-04-05
9: 4 32 dob_child2 2009-08-27
10: 5 29 dob_child2 2005-02-28
11: 1 30 dob_child3 NA
12: 2 27 dob_child3 NA
13: 3 26 dob_child3 2007-09-02
14: 4 32 dob_child3 2012-07-21
15: 5 29 dob_child3 NA
> dcast(DT.m1, family_id + age_mother ~ child, value.var = "dob")
family_id age_mother dob_child1 dob_child2 dob_child3
1: 1 30 1998-11-26 2000-01-29 NA
2: 2 27 1996-06-22 NA NA
3: 3 26 2002-07-11 2004-04-05 2007-09-02
4: 4 32 2004-10-10 2009-08-27 2012-07-21
5: 5 29 2000-12-05 2005-02-28 NA
对于较为复杂的数据可以这样做
> DT <- fread("melt_enhanced.csv")
> DT
family_id age_mother dob_child1 dob_child2 dob_child3 gender_child1 gender_child2 gender_child3
1: 1 30 1998-11-26 2000-01-29 NA 1 2 NA
2: 2 27 1996-06-22 NA NA 2 NA NA
3: 3 26 2002-07-11 2004-04-05 2007-09-02 2 2 1
4: 4 32 2004-10-10 2009-08-27 2012-07-21 1 1 1
5: 5 29 2000-12-05 2005-02-28 NA 2 1 NA
> DT.m2 <- melt(DT, measure = patterns("^dob","^gender"), value.name = c("dob", "gender"))
> DT.m2
family_id age_mother variable dob gender
1: 1 30 1 1998-11-26 1
2: 2 27 1 1996-06-22 2
3: 3 26 1 2002-07-11 2
4: 4 32 1 2004-10-10 1
5: 5 29 1 2000-12-05 2
6: 1 30 2 2000-01-29 2
7: 2 27 2 NA NA
8: 3 26 2 2004-04-05 2
9: 4 32 2 2009-08-27 1
10: 5 29 2 2005-02-28 1
11: 1 30 3 NA NA
12: 2 27 3 NA NA
13: 3 26 3 2007-09-02 1
14: 4 32 3 2012-07-21 1
15: 5 29 3 NA NA
> DT.c2 <- dcast(DT.m2, family_id + age_mother ~ variable, value.var = c("dob","gender"))
> DT.c2
family_id age_mother dob_1 dob_2 dob_3 gender_1 gender_2 gender_3
1: 1 30 1998-11-26 2000-01-29 NA 1 2 NA
2: 2 27 1996-06-22 NA NA 2 NA NA
3: 3 26 2002-07-11 2004-04-05 2007-09-02 2 2 1
4: 4 32 2004-10-10 2009-08-27 2012-07-21 1 1 1
5: 5 29 2000-12-05 2005-02-28 NA 2 1 NA
R语言学习笔记(十七):data.table包中melt与dcast函数的使用的更多相关文章
- R语言学习笔记:使用reshape2包实现整合与重构
R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...
- R语言学习笔记:使用tcltk包显示进度条
一般在跑耗时较长的程序时,我们不知道程序到底有没有正常跑着,或者在爬虫的时候不知道爬到什么时候断了.因此可以添加进度条来显示当前进度,观察进度是否有进展.当进度条卡住的时候,可以判断程序断线,从而可以 ...
- R语言学习笔记:怎么从txt中读入数据
1 从该链接中下载测试数据,http://pan.baidu.com/share/link?shareid=3322971616&uk=3862050759 2 把测试文件Anal ...
- R语言学习笔记:choose、factorial、combn排列组合函数
一.总结 组合数:choose(n,k) —— 从n个中选出k个 阶乘:factorial(k) —— k! 排列数:choose(n,k) * factorial(k) 幂:^ 余数:%% 整数商: ...
- R语言学习笔记(十六):构建分割点函数
选取预测概率的分割点 cutoff<- function(n,p){ pp<-1 i<-0 while (pp>=0.02) { model.predfu<-rep(&q ...
- R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...
- R语言学习 第九篇:plyr包
在数据分析中,整理数据的本质可以归纳为:对数据进行分割(Split),然后应用(Apply)某些处理函数,最后将结果重新组合(Combine)成所需的格式返回,简单描述为:Split - Apply ...
- R语言学习笔记1——R语言中的基本对象
R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...
- R语言学习 第十篇:包
包(Package)是实现特定功能的.预先写好的代码库(library),通俗地说,包是含有函数.数据等的功能模块.R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量 ...
随机推荐
- 转载: Centos7 升级python3,解决升级后不兼容问题
Centos7配置更新国内yum源 http://blog.csdn.net/qingguiyu/article/details/50721956 Centos7 升级python3,解决升级后不兼容 ...
- ThinkPHP5.0版本的优势在于:
更灵活的路由: 依赖注入: 请求缓存: 更强大的查询语法: 引入了请求/响应对象: 路由地址反解生成: 增强的模型功能: API开发友好: 改进的异常机制: 远程调试支持: 单元测试支持: 命令行工具 ...
- June 11th 2017 Week 24th Sunday
I hope I can find the one who is afraid of losing me. 我希望找到一个担心失去我的人. When I was young, sometimes I ...
- 简单的PHP算法题
简单的PHP算法题 目录 1.只根据n值打印n个0 2.根据n值打印一行 0101010101010101010101…… 3.根据n值实现1 00 111 0000 11111…… 4.根据n值实现 ...
- BZOJ3874:[AHOI2014&JSOI2014]宅男计划(爬山法)
Description [故事背景] 自从迷上了拼图,JYY就变成了个彻底的宅男.为了解决温饱问题,JYY 不得不依靠叫外卖来维持生计. [问题描述] 外卖店一共有N种食物,分别有1到N编号.第i种 ...
- Gym
Gym 用于研发与比较强化学习算法的工具. 安装 pip install gym 环境 车杆问题,模型栗子CartPole-v0 env.step() ,传入0,1,表示车向左,右给1牛顿的力,现在要 ...
- LA 4015 树形背包
题目链接:https://vjudge.net/contest/164840#problem/D 题意: 给一棵树,每条边上有一些权值,求 长度不超过 x ,最多能走多少个点: 分析: 考虑每一个节点 ...
- Reverse Polish notation
Reverse Polish notation is a notation where every operator follows all of its operands. For example, ...
- H5与安卓、IOS的交互,判断微信、移动设备、安卓、ios
一.通过用户代理可以判断网页当前所在的环境 var browser={ versions:function(){ var u = navigator.userAgent, app = navigato ...
- [luoguP4306][JSOI2010]连通数
\[Yeasion\] \[Nein\] 其实我很奇怪为什么我的正解和输出\(N \times N\)的效果是一样的.....嗯,大概是\(RP\)问题吧.... 嗯首先来看一下题目: 题目描述: 度 ...