使用重塑-Tibble问题从宽到长的转换问题? [英] Problems converting from wide to long using reshape - tibble issue?

查看:12
本文介绍了使用重塑-Tibble问题从宽到长的转换问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将我的数据从宽转换为长。我有一个id变量和131列时间数据。所有列均为整数格式。数据是以CSV格式导入的。

> class(ECGHR)
[1] "tbl_df"     "tbl"        "data.frame"

以下是22个时变变量的前6行数据:

> head (ECGHR)
# A tibble: 6 × 132
 id    T0    T1    T2    T3    T4    T5    T6    T7    T8    T9   T10   T11  T12   T13   T14   T15   T16   T17   T18   T19   T20   T21   T22
<int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1  2003    70    65    69    71    68    74    67    65    60    66    59    99    74    73    87    94    88    88    98    73    72    63    79
2  2004    98   105    85    87    83    83    77    71    75    73    73    71    87    74    79    75    72    71    71    68    86    72    73
3  2008    93    92    91    90    93    88    89    83    93    96    95    94    89    91    87    93    88   100    93    92    89    93    83
4  2010    71    69    74    71    74    68    74    68    78    75    81    72    74    77    74    70    64    68    65    69    66    73    75
5  2018    90    86    93    91    86    82    97    95    95    83    79    88    78    92    86    94    83    79    96    91    72    78    80
6  2019    60    58    59    58    66    68    73    77    58   110    56    56    53    49    73    56    45    50    46    45    46    54    50

以下是我的重塑代码:

ECGHR_long=reshape(ECGHR, varying=c(2:132), direction="long", idvar="id", sep="")

以下是警告消息:

在‘row.name<;-.data.Frame’(‘tMP’,Value=Paste(d[,idvar], 次[1L],:无效的‘row.name’长度此外:警告消息: 不推荐在Tibble上设置行名。

我习惯于使用数据框,我不明白为什么它不能重塑(我是R的新手)。我需要将其转换为DAT帧吗?如有真知灼见,不胜感激!

推荐答案

若要在R的基数中使用reshape函数,请尝试此操作--我们省略了idvar="id",因为它可以自己计算出该函数,但如果您将其添加进去,它不会有任何影响。

reshape(as.data.frame(ECGHR), dir = "long", varying = list(2:ncol(ECGHR)),
  times = names(ECGHR)[-1])
##           id time T0
## 2003.T0 2003   T0 70
## 2004.T0 2004   T0 98
## 2008.T0 2008   T0 93
## 2010.T0 2010   T0 71
## 2018.T0 2018   T0 90
## 2019.T0 2019   T0 60
## etc.

或使用reshape2包:

library(reshape2)
melt(ECGHR, id.vars = 1)

##     id variable value
## 1 2003       T0    70
## 2 2004       T0    98
## 3 2008       T0    93
## 4 2010       T0    71
## 5 2018       T0    90
## 6 2019       T0    60

注意:我们使用了以下输入:

Lines <- "id    T0    T1    T2    T3    T4    T5    T6    T7    T8    T9   T10   T11  T12   T13   T14   T15   T16   T17   T18   T19   T20   T21   T22
1  2003    70    65    69    71    68    74    67    65    60    66    59    99    74    73    87    94    88    88    98    73    72    63    79
2  2004    98   105    85    87    83    83    77    71    75    73    73    71    87    74    79    75    72    71    71    68    86    72    73
3  2008    93    92    91    90    93    88    89    83    93    96    95    94    89    91    87    93    88   100    93    92    89    93    83
4  2010    71    69    74    71    74    68    74    68    78    75    81    72    74    77    74    70    64    68    65    69    66    73    75
5  2018    90    86    93    91    86    82    97    95    95    83    79    88    78    92    86    94    83    79    96    91    72    78    80
6  2019    60    58    59    58    66    68    73    77    58   110    56    56    53    49    73    56    45    50    46    45    46    54    50"

ECGHR <- read.table(text = Lines, header = TRUE)

这篇关于使用重塑-Tibble问题从宽到长的转换问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆