Вот мой исходный результат.Преобразование данных с R
BizDate Description TotalAmount TotalQty
2013-09-01 NIN JIOM COUGH SYRUP 75ML 11.8 2
2013-09-01 BREACOL COUGH SYRUP ADULTS 120ML 15.8 2
2013-09-02 AFRICAN SEA-COCONUT COUGH SYRUP 177ML 8.5 1
2013-09-03 AFRICAN SEA COCONUT COUGH SYRUP 177ML 8.2 1
2013-09-01 THREE LEGS COOLING WATER 200ML 21.0 14
2013-09-01 SEAHORSE BRAND COOLING WATER 200ML 4.4 4
2013-09-05 AFRICAN SEA-COCONUT COUGH SYRUP 177ML 8.5 1
2013-09-06 AFRICAN SEA COCONUT COUGH SYRUP 177ML 8.2 1
Как бы превратить его в нечто вроде этого
Description 2013-09-01 2013-09-02 .......
NIN JIOM COUGH SYRUP 75ML some number some number .......
BREACOL COUGH SYRUP ADULTS 120ML some number some number .......
AFRICAN SEA-COCONUT COUGH SYRUP 177ML some number some number .......
AFRICAN SEA COCONUT COUGH SYRUP 177ML some number some number .......
THREE LEGS COOLING WATER 200ML some number some number .......
SEAHORSE BRAND COOLING WATER 200ML some number some number .......
AFRICAN SEA-COCONUT COUGH SYRUP 177ML some number some number .......
AFRICAN SEA COCONUT COUGH SYRUP 177ML some number some number .......
Вот некоторые поддельные данные.
set.seed(1)
dat <- data.frame(product = rep(letters[1:4], each = 4)
, date = sample(seq(as.Date("2013-01-01"), as.Date("2013-01-10"), by = 1), 16, TRUE)
, amount = sample(1:100, 16, TRUE)
, qty = sample(1:4, 16, TRUE))
dat
product date amount qty
1 a 2013-01-03 72 2
2 a 2013-01-04 100 1
3 a 2013-01-06 39 4
4 a 2013-01-10 78 3
5 b 2013-01-03 94 4
6 b 2013-01-09 22 1
7 b 2013-01-10 66 3
8 b 2013-01-07 13 2
9 c 2013-01-07 27 4
10 c 2013-01-01 39 3
11 c 2013-01-03 2 4
12 c 2013-01-02 39 3
13 d 2013-01-07 87 3
14 d 2013-01-04 35 4
15 d 2013-01-08 49 1
16 d 2013-01-05 60 2
Мой тупой способ сделать это. Есть ли умнее сделать это? Я думаю использовать plyr. просто направьте меня в нужный пакет или путь.
dat1<-subset(dat,date=="2013-01-01")
colnames(dat1)[c(3,4)]<-c("2013-01-01.amount","2013-01-01.qty")
dat1<-dat1[-2]
dat2<-subset(dat,date=="2013-01-02")
colnames(dat2)[c(3,4)]<-c("2013-01-02.amount","2013-01-02.qty")
dat2<-dat2[-2]
dat3<-subset(dat,date=="2013-01-03")
colnames(dat3)[c(3,4)]<-c("2013-01-03.amount","2013-01-03.qty")
dat3<-dat3[-2]
new.dat<-merge(dat1,dat2,by="product",all.x=T,all.y=T)
new.dat<-merge(new.dat,dat3,by="product",all.x=T,all.y=T)
new.dat[is.na(new.dat)]<-0
new.dat
product 2013-01-01.amount 2013-01-01.qty 2013-01-02.amount 2013-01-02.qty
1 a 0 0 0 0
2 b 0 0 0 0
3 c 39 3 39 3
2013-01-03.amount 2013-01-03.qty
1 72 2
2 94 4
3 2 4
Это создаст n строк и 61 столбца. Благодарю. –
Что вы пытались? На каких пакетах вы смотрели? Вы проводили какие-либо исследования для решения самостоятельно? Какие функции, по вашему мнению, могут быть полезны? Пожалуйста, проявите немного желания. Это не * я даю данные, вы пишете код * сайта. –
Я использую plyr. Пока не повезло. пытался много способов. Я нашел тупой способ сделать это, подбирая день и переименовать его вручную. И присоединяйтесь к ним. Мне просто нужен более умный способ сделать это. Сожалею. –