首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R-从长到宽重塑时的"Error in varying[,i]:in of dimensions“

R-从长到宽重塑时的"Error in varying[,i]:in of dimensions“
EN

Stack Overflow用户
提问于 2018-08-19 06:05:59
回答 3查看 996关注 0票数 0

我正在尝试使用R中的reshape()函数从长到宽重塑我的数据帧。我能够使用these instructions from R bloggers对另一个数据集从宽到长进行转换,但是当使用相同的指导方针进行相反的操作时,我总是收到这个错误,我不明白:

代码语言:javascript
复制
Error in varying[, i] : incorrect number of dimensions

以下是我的数据示例(PYS_shorter):

代码语言:javascript
复制
id_s phase  A   B       C       D       E       F
1    1      3   1.83    1.35    0.00    0.38    0.67
1    2      2   1.67    1.65    0.00    0.38    0.67
1    3      2   1.67    1.47    0.00    0.15    0.17
1    4      1   1.33    1.59    0.00    0.00    0.00
1    5      1   1.17    1.35    0.38    0.62    1.33
1    6      1   1.00    1.53    0.13    0.08    1.17
1    7      1   1.50    1.29    0.00    0.00    0.33
1    8      1   1.33    1.29    0.00    0.00    0.17
2    1      2   1.50    1.41    0.00    0.00    0.67
2    2      1   1.83    1.35    0.25    0.54    0.83
2    3      1   1.50    1.65    0.00    0.15    1.33
2    4      2   1.83    1.65    0.00    0.00    0.33
2    5      1   1.50    1.41    0.00    0.00    0.17
2    6      1   1.83    1.18    0.00    0.00    0.00
2    7      1   1.17    1.47    0.00    0.00    0.00
2    8      1   1.50    1.76    0.00    0.00    0.00 

下面是我的代码:

代码语言:javascript
复制
PYS_WIDE <- reshape(PYS_shorter, 
                varying = c("A","B","C","D","E","F"),
                timevar = "phase", 
                idvar = "id_s", 
                direction="wide", 
                sep ="_")

我做错了什么?这个错误是什么意思?我如何才能解决这个问题,这样我才能从长到宽地重塑这个数据帧(所以有8个A变量,8个B变量,等等,每个主题只有一行)?

非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2018-08-19 06:13:35

试试来自tidyrspread。我想这就是你需要的。

代码语言:javascript
复制
df <- data.frame(id_s = c(1:26), phase = c(letters), A = c(100:125), B = c(1000:1025))

library(tidyr)
# wide to long
df %>%
  gather(data = ., key = Group_type, value = Value, -id_s, -phase ) -> long


# long to wide
long %>%
  spread(data = ., key = Group_type, value = Value)


head(long)
  id_s phase Group_type Value
1    1     a          A   100
2    2     b          A   101
3    3     c          A   102
4    4     d          A   103
5    5     e          A   104
6    6     f          A   105

head(wide)
  id_s phase   A    B
1    1     a 100 1000
2    2     b 101 1001
3    3     c 102 1002
4    4     d 103 1003
5    5     e 104 1004
6    6     f 105 1005
票数 0
EN

Stack Overflow用户

发布于 2018-08-19 06:18:49

dput(Your_Data)

idvar

一个或多个长格式变量的名称,用于标识来自同一组/个人的多个记录。这些变量也可以以宽格式存在。

基本上,id_s搞砸了你的查询,reshape不知道它是什么。

票数 0
EN

Stack Overflow用户

发布于 2018-08-21 01:17:23

删除

代码语言:javascript
复制
varying = c("A","B","C","D","E","F"),

工作,尽管我不知道为什么!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51912898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档