通过从行切换到列来重新排序数据框
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
我有以下格式的数据
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