library(reshape2)
Customer<- c("Susan","Louis", "Frank","Susan")
Seller<- c("Ivan", "Donald","Chris","Ivan")
Service<-c("COU","CAR", "FCL","CAR")
Billingmean<- c(100,200,300,400)
WrsHoldSum<-c(0,0,0,0)
Group<- c("n1","n2"," "," ")
B1<- c(0,2,2,1)
B2<-c(9,8,7,6)
B3<- c(5,4,3,2)
Этот информационный кадр включает в себя такую информацию, как среднее значение выставления счетов за прошлые годы, Продавец, Тип обслуживания
df<- data.frame(Customer, Seller,Service, Billingmean,WrsHoldSum, Group,B1,B2,B3)
В этом разделе используется dcast для изменения конфигурации.из dframe, чтобы я мог использовать этот файл позже в Word, чтобы заполнить некоторые каталоги в режиме «Mail Merge»
sub1<- dcast(data= df, formula= Customer+Group+Seller+WrsHoldSum~Service,fun.aggregate= sum,value.var= "Billingmean")
sub2<- dcast(data= df, formula= Customer+Group+Seller+WrsHoldSum~Service,fun.aggregate= sum,value.var= "B1")
sub3<- dcast(data= df, formula= Customer+Group+Seller+WrsHoldSum~Service,fun.aggregate= sum,value.var= "B2")
sub4<- dcast(data= df, formula= Customer+Group+Seller+WrsHoldSum~Service,fun.aggregate= sum,value.var= "B3")
Здесь я добавляю новые столбцы для добавления информации в таблицу, однако не является вложенным в окружение, чтобы вызывать его в функции write.csv ().
tNames <- grep(x = ls(), pattern = "^sub", value = T)
lapply(seq_along(tNames), function(x){
tSym <- as.name(tNames[[x]])
d1 <- copy(eval(tSym))
cols <- grep(x = names(d1), pattern = "^CAR|^COU|^FCL", value = T)
setnames(d1, old = cols, new = paste0(cols, " B", x))
return(d1)
}) %>% Reduce(function(x, y) merge(x, y, by = c("Customer","Group","Seller","WrsHoldSum")), .)
здесь я не знаю, есть ли другой способ объединения новых столбцов Billing1 (B1), Billing 2 (B2), Billing 3 (B3) ..
Это ожидаемый результат
Customer Group Seller WrsHoldSum CAR B1 COU B1 FCL B1 CAR B2 COU B2 FCL B2 CAR B3 COU B3 FCL B3 CAR B4 COU B4 FCL B4
1 Frank Chris 0 0 0 300 0 0 2 0 0 7 0 0 3
2 Louis n2 Donald 0 200 0 0 2 0 0 8 0 0 4 0 0
3 Susan Ivan 0 400 0 0 1 0 0 6 0 0 2 0 0
4 Susan n1 Ivan 0 0 100 0 0 0 0 0 9 0 0 5 0