У меня есть кадр данных в длинном формате, который я бы хотел преобразовать в широкий формат. Кадр данных имеет несколько повторяющихся идентификаторов, которые я хотел бы рассматривать как уникальные экземпляры, и представлять их как отдельные строки в широком фрейме данных.Кастинг от длинного до широкоформатного, с каждым повторением, создающим новую строку
Мой вопрос похож на этот:
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 , литье должно работать как обычно. Но если есть повторение, будет создана вторая (или третья или четвертая) строка.
Для вашего 'dplyr' методы, вместо базы' reshape' вы можете добавить это к концу цепочка dplyr (после загрузки 'reshape2'):' dcast (ID1 + ID2 + AUXID ~ Sp, value.var = "Count", fill = 0)%>% select (-AUXID) ' – eipi10