Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按id排列数据表_R_Data.table_Reshape - Fatal编程技术网

R 按id排列数据表

R 按id排列数据表,r,data.table,reshape,R,Data.table,Reshape,我有以下数据表: > df month student A B C D 1: 1 Amy 9 6 1 11 2: 1 Bob 8 5 5 2 3: 2 Amy 7 7 2 4 4: 2 Bob 6 6 6 6 5: 3 Amy 6 8 10 7 6: 3 Bob 9 7 11 3 我想将此data.table转换为以下格式:>df1 month cols A

我有以下数据表:

> df
   month student A B  C  D
1:     1     Amy 9 6  1 11
2:     1     Bob 8 5  5  2
3:     2     Amy 7 7  2  4
4:     2     Bob 6 6  6  6
5:     3     Amy 6 8 10  7
6:     3     Bob 9 7 11  3
我想将此data.table转换为以下格式:>df1

    month cols Amy Bob
 1:     1    A   9   8
 2:     1    B   6   5
 3:     1    C   1   5
 4:     1    D  11   2
 5:     2    A   7   6
 6:     2    B   7   6
 7:     2    C   2   6
 8:     2    D   4   6
 9:     3    A   6   9
10:     3    B   8   7
11:     3    C  10  11
12:     3    D   7   3

我尝试了使用dcast等多种方法,但无法转换数据。救命啊

您必须
熔化
数据帧,然后
dcast
-

tmp = melt(df, id = c("month", "student"), , variable.name = "cols")
df1 = dcast(tmp, month + cols ~ student, value.var = "value")

两者都来自于
数据。表
库A
tidyr
方法

> library(tidyr)
> df %>%
    gather(cols, values,  A:D) %>% 
    spread(student, values)
   month cols Amy Bob
1      1    A   9   8
2      1    B   6   5
3      1    C   1   5
4      1    D  11   2
5      2    A   7   6
6      2    B   7   6
7      2    C   2   6
8      2    D   4   6
9      3    A   6   9
10     3    B   8   7
11     3    C  10  11
12     3    D   7   3

是否必须使用
数据表
?您可以使用
dplyr
中的
spread
@不需要数据表。数据帧对我来说也很好。但是我不知道怎么做。