【发布时间】:2017-03-10 16:03:49
【问题描述】:
我有一个长格式的数据框,我想将其转换为宽格式。数据框有几个重复的标识符,我想将它们视为唯一实例,并将它们表示为宽数据框中的单独行。
我的问题和这个类似:
Forcing unique values before casting (pivoting) in R
但在上述问题中,唯一条目最终成为单独的列。对于我的问题,我希望将数据放入单独的行中。例如:
ID1<-c("A","A","A","A","A","B","B","B","B","B","C","C","C","C","C")
ID2<-c("R","R","R","L","L","R","R","L","L","R","R","L","L","R","R")
Sp<-c("Bird","Cat","Bird","Bird","Dog","Dog","Dog","Cat","Cat","Bird","Cat","Dog","Bird","Bird","Cat")
Count<-c(1,2,2,1,2,1,2,3,2,1,2,3,2,1,5)
DF<-data.frame(ID1,ID2,Sp,Count)
将数据转换为宽格式后,我希望输出数据如下所示:
ID1 ID2 Bird Cat Dog
A R 1 2 0
A R 2 0 0 # 2 Birds in the A/ R combination so need second row (don't want to add them together)
A L 1 0 2
B R 1 0 1
B R 0 0 2
B L 0 3 0
B L 0 2 0
C R 1 2 0
C R 0 5 0
C L 2 0 3
如果唯一 ID1/ID2 组合中没有重复,则演员表将正常工作。但如果有重复,则会创建第二(或第三或第四)行。
【问题讨论】: