我的数据格式如下
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的新手,但我尝试过重塑以获得我的结果但不能。任何指针都会很棒,谢谢。
答案 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