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拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量 ...
随机推荐
- .NET部分知识点整理
.Net学习 Visual Studio2018 企业版:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF 专业版:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 开发工具常用V ...
- Struts2学习-拦截器
1.新建项目user4,建立好和user3一样的目录,与之相比只是添加几个类,主要是struts.xml和action类的改变,其结果没有太大的变化 struts,xml <?xml versi ...
- win7 64位 安装java jdk1.8 ,修改配置环境变量
下载jdk1.8,下载地址:http://www.wmzhe.com/soft-30118.html 安装时有两个程序,都安装在同一个目录下. win7 64位 安装java jdk1.8 ,修改配置 ...
- 关于simotion建立同步/解除同步的问题
关于simotion建立同步/解除同步的问题. 问题: [enable gearing][disable gearing][enable camming][disable camming]都是一个过程 ...
- [18/12/03] 多态(polymorphism)和对象的转型(casting)
一.多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 比如:同样是调用人的“休息”方法,张三是睡觉,李四是旅游,同样是调用人“吃饭”的方法, ...
- doppia代码支持
stixels_t在stixel.hpp里,存储class stixel的vector
- T-SQL 基础 2
运行结果: while 循环 运行结果: 运行结果 : if 判断语句 计算 1到100的基数 运行结果 1到100的偶数 运行结果 局部变量前缀是 @ 全局变量(包括系统变量) 前缀是 @@
- TemplateSyntaxError at /article/list-article-titles/admin/
如图红圈所示,发现一个注释掉的{% if userinfo %}标签竟然可以影响后面的标签快,不能注释,需要完全删除才不会报错. 继续这类django在html模板中直接注释掉发生错误以及解决方案: ...
- android:TableLayout表格布局详解
http://blog.csdn.net/justoneroad/article/details/6835915 这篇博文包括的内容:1.TableLayout简介2.TableLayout行列数的确 ...
- HDU 1254 推箱子(BFS加优先队列)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1254 推箱子 Time Limit: 2000/1000 MS (Java/Others) Me ...