首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据处理|数据框重铸

数据处理|数据框重铸

作者头像
生信补给站
发布2020-08-06 10:37:26
发布2020-08-06 10:37:26
81000
代码可运行
举报
文章被收录于专栏:生信补给站生信补给站
运行总次数:0
代码可运行

数据处理过程中,针对数据框,可以进行列的添加,以及长、宽数据的转化。

在实际应用中,宽型数据更具可读性,长型数据则更适合做分析。

一 reshape2包中两个主要的函数

melt—将宽型数据融合成长型数据;cast—将长型数据转成宽型数据

此处用R内置的airquality数据集,首先将列名改成小写,然后查看相应的数据

代码语言:javascript
代码运行次数:0
运行
复制
library(reshape2)

1.1 melt函数 (宽转长)

id.vars中指定相应变量;variable.name和value.name分别对variable和value列重命名

代码语言:javascript
代码运行次数:0
运行
复制
airMelt1 <- melt(airquality)

1.1.2 将month和day共同作为ID variables(那些能够区分不同行数据的变量共同作为变量),且修改长数据中的列名

代码语言:javascript
代码运行次数:0
运行
复制
airMelt2 <- melt(airquality, id.vars = c("month", "day"),

1.2 cast函数 (长转宽)

dcast:左边参数表示"ID variables",右边的参数表示measured variables。

1.2.1 month和day是ID variables,variable则表示measured variables。

代码语言:javascript
代码运行次数:0
运行
复制
airMelt3 <- melt(airquality, id.vars = c("month", "day"))

1.2.2 一个数据单元有一个以上的数据。比如,我们的ID variables不包含day,

代码语言:javascript
代码运行次数:0
运行
复制
dcast(airMelt3, month ~ variable)

可以看到每个单元是month与climate组合的个数。所得到数据是month对应的day的记录数

1.2.3 聚合(aggregate)这些数据,比如取mean,median,sum。比如计算均值,通过na.rm = TRUE删除NA值。

代码语言:javascript
代码运行次数:0
运行
复制
dcast(aql, month ~ variable, fun.aggregate = mean, na.rm = TRUE)

二 $、with、within、transform等进行列的添加

head(airquality)

2.1 $符添加列

代码语言:javascript
代码运行次数:0
运行
复制
data<-head(airquality)

2.2 within 必须在新添加的变量中加上花括号

代码语言:javascript
代码运行次数:0
运行
复制
data2 <- within(data,{logwind = log(wind)})

2.3 with 也可以使用with函数,该函数可以用于任何表达式的计算,但每次只能生成一个计算字段,最后还需要结合使用cbind函数

代码语言:javascript
代码运行次数:0
运行
复制
data3 <- cbind(data3,with(data,log(wind)))

2.4 transform函数

代码语言:javascript
代码运行次数:0
运行
复制
data4 <- transform(data,logwind = log(wind),day2 = day^2)

三 参考链接:R语言之数据重塑

An Introduction to reshape2

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档