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

时间:2016-06-07 18:09:12

标签: r reshape

我的数据格式如下

V1 V2 V3 V4
一个1的XYZ
A 3 B XYZ
一个2 C XYZ
1 d XYZ
b 4分配甲ABC
b 3分配乙ABC
B 8ÇABC
b 5分配d ABC

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

U1 U2 A B C d
一个XYZ 1 3 2 1
b abc 4 3 8 5

虽然我是R的新手,但我尝试过重塑以获得我的结果但不能。任何指针都会很棒,谢谢。

3 个答案:

答案 0 :(得分:3)

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是原始数据框。

答案 1 :(得分:1)

您可以将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

答案 2 :(得分:1)

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")

返回

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