我有一个如下所示的数据集:
ID C1 C2
A S1 1
A S2 1
A S3 2
A S4 2
B S1 2
B S2 2
B S3 2
B S4 2
C S1 2
C S2 2
C S3 1
C S4 1
并希望重新格式化为:
ID S1 S2 S3 S4
A 1 1 2 2
B 2 2 2 2
C 2 2 1 1
有什么建议吗?
答案 0 :(得分:1)
在R
中,我们可以使用dcast
library(reshape2)
dcast(df1, ID~C1, value.var='C2')
# ID S1 S2 S3 S4
# 1 A 1 1 2 2
# 2 B 2 2 2 2
# 3 C 2 2 1 1
或使用base R
with(df1, tapply(C2, list(ID, C1), FUN=I))
或者
xtabs(C2~ID+C1, df1)
答案 1 :(得分:1)
使用tidyr::spread()
的另一种选择:
library(tidyr)
spread(df, C1, C2)
ID S1 S2 S3 S4
1 A 1 1 2 2
2 B 2 2 2 2
3 C 2 2 1 1