前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R基础|do包(3):宽型数据转长型数据reshape_toLong(1)

R基础|do包(3):宽型数据转长型数据reshape_toLong(1)

作者头像
Chris生命科学小站
发布2023-02-28 19:59:48
4870
发布2023-02-28 19:59:48
举报
文章被收录于专栏:Chris生命科学小站五年归档

我们测量三位小朋友1、2、3,在1岁、2岁、3岁时候的身高。数据如下:

代码语言:javascript
复制
df = data.frame(id=c(1,2,3),
                h1=c(15,16,17),
                h2=c(21,22,23),
                h3=c(31,32,33))
df

这是一个宽型数据,我们想把数据转换成长型,像这样。

这就是宽型数据转换成长型数据,这种转换在作图、数据分析是经常会用到。在do包中,将宽型数据转换成长数据的命令是reshape_toLong。

reshape_toLong命令可适用于3种情况:前缀prefix、后缀suffix、变量名var.names。下面我一一讲解。

1、前缀prefix

宽型数据

代码语言:javascript
复制
df = data.frame(id=c(1,2,3),
                h1=c(15,16,17),
                h2=c(21,22,23),
                h3=c(31,32,33))
df

转换成长型数据的命令:

代码语言:javascript
复制
reshape_toLong(data = df,prefix = "h",j = "年龄")

reshape_toLong命令中,data是要整理的数据,prefix是重复测量变量的前缀,这里是h,j是新产生列的名称,这里是年龄。

新生存的数据,nrow是新添加的行,就是原始数据所处的行号。年龄是j添加的,h和id是之前的。

为什么新添加了nrow这一列,因为我们没有对原始宽型数据指定id,如果我们指定了id,那么就不会添加这一列。

代码语言:javascript
复制
reshape_toLong(data = df,id = "id",prefix = "h",j = "年龄")

我们看到,添加了id之后,就没有了指定行号的nrow,而且id也到了最前面的位置。这里需要注意,id是既然是id,那必须是唯一的才行。同时,我们看到,有没有id都可以进行转换,重要的事情说3遍,有没有id都可以进行转换,有没有id都可以进行转换,有没有id都可以进行转换。

2、后缀suffix

宽型数据

代码语言:javascript
复制
df = data.frame(id=c(1,2,3),
                y1h=c(15,16,17),
                y2h=c(21,22,23),
                y3h=c(31,32,33))
df

转换成长型数据的命令

代码语言:javascript
复制
reshape_toLong(data = df,suffix = 'h',j = '年龄')

这个时候的h在y1h、y2h、y3h是后缀,所以,我们使用了后缀suffix。

下面,我们指定id来看一下。

代码语言:javascript
复制
reshape_toLong(data = df,id = 'id',suffix = 'h',j = '年龄')

3、变量名var.names

宽型数据

代码语言:javascript
复制
df=data.frame(升高=c(1,2,4),
              体重=c(4,5,7),
              腰围=c(74,64,69))
df

转换成长型数据的命令

代码语言:javascript
复制
reshape_toLong(data = df,
               var.names = c('身高','体重','腰围'),
               j='指标')

总结:今天是宽型数据转换成长型数据的第一讲,主要是有3种情况,前缀prefix,后缀suffix,变量名var.names,注意id可有可无、id可有可无、id可有可无,j是新产生列的名称。

今天演示的数据,是比较简单的,也是比较整齐的,下次我们再来演示一下复杂的情况。

do包中的其他命令

R基础|do包(1):左截取、右截取、中间截取

R基础|do包(2):替换replace

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

本文分享自 Chris生命科学小站 微信公众号,前往查看

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

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

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