通过从行切换到列来重新排序数据框

Re-ordering dataframe by switching from rows to columns

我有以下格式的数据

V1 V2 V3 V4
a 1 A xyz
a 3 B xyz
a 2 C xyz
a 1 D xyz
b 4 A abc
b 3 B abc
b 8 C abc
b 5 D abc

我想得到一个如下所示的数据框:

U1 U2 A B C D
a xyz 1 3 2 1
b abc 4 3 8 5

虽然我是 R 的新手,但我尝试使用 reshape 来获得我的结果,但没有成功。任何指点都会很棒,谢谢。

library(tidyr)
spread(df, V3, V2)
  V1  V4 A B C D
1  a xyz 1 3 2 1
2  b abc 4 3 8 5

其中 df 是您的原始数据框。

您可以将reshape用作

reshape(df, idvar=c("V1", "V4"), timevar="V3", direction="wide")

#    V1  V4  V2.A  V2.B V2.C V2.D
#1   a  xyz    1    3    2    1
#5   b  abc    4    3    8    5
library(data.table)
# read data to make a complete example
dt <- fread("
        V1    V2    V3    V4
        a      1      A      xyz
        a      3      B      xyz
        a      2      C      xyz
        a      1      D      xyz
        b      4      A      abc
        b      3      B      abc
        b      8      C      abc
        b      5      D      abc")

# transform from long to wide format
dcast(dt, V1 + V4 ~ V3, value.var = "V2")

returns

   V1  V4 A B C D
1:  a xyz 1 3 2 1
2:  b abc 4 3 8 5