У меня есть следующий фрейм данных в R
DF2<-data.frame("ID"=c("A", "A", "A", "B", "B", "B", "B", 'B'),
'Freq'=c(1,2,3,1,2,3,4,5), "Val"=c(1,2,4, 2,3,4,5,8))
Рамка данных имеет следующий вид
ID Freq Val
1 A 1 1
2 A 2 2
3 A 3 4
4 B 1 2
5 B 2 3
6 B 3 4
7 B 4 5
8 B 5 8
Я хочу растопить и преобразовать кадр данных, чтобы получить следующий кадр данных
A_Freq A_Value B_Freq B_Value
1 1 1 1 2
2 2 2 2 3
3 3 4 3 4
4 NA NA 4 5
5 NA NA 5 8
Я попробовал следующий код
DF3<-melt(DF2, by=ID)
DF3$ID<-paste0(DF3$ID, DF3$variable)
DF3$variable<-NULL
DF4<-dcast(DF3, value~ID)
Это дает следующий фрейм данных
value AFreq AVal BFreq BVal
1 1 1 1 1 NA
2 2 2 2 2 2
3 3 3 NA 3 3
4 4 NA 4 4 4
5 5 NA NA 5 5
6 8 NA NA NA 8
Как я могу получить вышеуказанный результат. Я пробовал другие варианты dcast, но не смог получить желаемый результат. попросить кого-нибудь помочь