Я хотел бы построить два типа значений друг против друга (dupl и orig). Можно ли легко изменить следующий фрейм данныхв R, переформатируя «смешанный» кадр данных с использованием расплава и литья
record=c("r1","r1","r2","r3","r3")
v1=rep(0,5)
v2=c(0,0,1,0,0)
v3=c(1,1,0,1,1)
type=c("orig","dupl","orig","orig","dupl")
df<-data.frame(record, v1, v2, v3, type)
df
record v1 v2 v3 type
1 r1 0 0 1 orig
2 r1 0 0 1 dupl
3 r2 0 1 0 orig
4 r3 0 0 1 orig
5 r3 0 0 1 dupl
чтобы выглядеть следующим образом:
record v1.orig v2.orig v3.orig v1.dupl v2.dupl v3.dupl
r1 0 0 1 0 0 1
r2 0 1 0
r3 0 0 0 0 0 0
Дело в том, что я могу составить график vX.orig vs vX.dupl. Или есть лучший способ сделать это? Я смотрю на dcast(), но, похоже, не может получить то, что хочу, возможно, потому что мои данные только частично расплавлены (по типу?).
EDIT: вот что я пробовал:
df1<-melt(df,id="record")
dcast(df1,record~value, margins=TRUE)
это может быть обобщена на столбцы, которые не начинаются с «V» ? ... в моем реальном сценарии я хочу, чтобы все мои столбцы (40) дублировались как «_dupl». – val
уверен, что вы можете отрегулировать эту часть на другие термины 'dplyr :: select()', проверьте изменение для альтернативы, используя 'reshape2' – Nate