简体   繁体   中英

Dcast Function -> Reorder Columns

I used the dcast function to show the spendings per month of different companies. Of course I want January first, then February etc. and not the alphabetical order.

Spendings <- data %>%
    filter(Familie == "Riegel" & Jahr == "2017") %>%
    group_by(Firma, Produktmarke, `Name Kurz`) %>%
    summarise(Spendingsges = sum(EUR, na.rm = TRUE))

Spendings <- dcast(data = Spendings, Firma + Produktmarke ~ `Name Kurz`, value.var="Spendingsges")
Spendings

                Firma               Produktmarke     Apr     Aug     Dez     Feb     Jan     Jul     Jun     Mai     Mrz     Nov     Okt     Sep
                Company1           Product1          228582 1902138  725781      NA  709970      NA  265313  228177      NA      NA 1463258 4031267

Is there a way to reorder the colums dynamically ? For 2018 for example the dataframe is shorter, so i can not use:

Spendings <- Spendings[,c("Firma", "Produktmarke", "Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")]
    Spendings_raw <- data.frame(matrix(ncol = 14, nrow = 0))
colnames(Spendings_raw) <- c("Firma", "Produktmarke", "Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")
Spendings_raw

Spendings <- data %>%
    filter(Familie == "Riegel" & Jahr == "2017") %>%
    group_by(Firma, Produktmarke, `Name Kurz`) %>%
    summarise(Spendingsges = sum(EUR, na.rm = TRUE))


Spendings <- dcast(data = Spendings, Firma + Produktmarke ~ `Name Kurz`, value.var="Spendingsges")
Spendings <- rbind.fill(Spendings_raw, Spendings)

This works perfectly ;-).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM