我正在尝试使用R中的reshape()函数将数据框从长整形改成长整形。我能够使用these instructions from R bloggers使用另一个数据集将宽整改成长整形,但是当使用相同的准则时,否则,我会不断收到我不理解的错误:
Error in varying[, i] : incorrect number of dimensions
以下是我的数据示例(PYS_shorter):
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
这是我的代码:
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变量等,每个主题只有一行)?
非常感谢!
答案 0 :(得分:0)
尝试使用spread
中的tidyr
。我认为这就是您所需要的。
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
答案 1 :(得分:0)
dput(您的数据)
idvar
一个或多个长格式变量的名称,它们标识同一组/单个组中的多个记录。这些变量也可能以宽格式出现。
基本上id_s搞砸了您的查询,重塑不知道它是什么。
答案 2 :(得分:0)
删除
varying = c("A","B","C","D","E","F"),
有效,尽管我不知道为什么!