Search code examples
r

Order() in R - argument is missing, with no default


Here is the gist of my problem. I inner joined two dataframes, called it MergedData. I wanted to group the data by customer and sales. This gives me what I want:

data2 <- aggregate(MergedData$Purchase~ MergedData$User_ID+ 
                          MergedData$Product_Category,data = MergedData, FUN =  sum)

 MergedData$User_ID MergedData$Product_Category MergedData$Purchase
1            1000002                           1                3267
2            1000003                           1                 768
3            1000005                           1                4063

Now I want to sort it by MergedData$Purchase. So, I try this -

data2 <- data2[order(data2$`MergedData$User_ID`,
                -data2$`MergedData$Purchase`)]

It returns me the following error:

Error in [.data.frame(data2, order(data2$MergedData$User_ID, -data2$MergedData$Purchase)) : undefined columns selected

If I put a comma after -data2$MergedData$Purchase, it returns me another error:

Error in order(data2$MergedData$User_ID, -data2$MergedData$Purchase, : argument is missing, with no default

Can someone please help me troubleshoot this problem.


Solution

  • The problem is that you only used one index to data2, so the result of order is being treated as column names. Write it with a comma after order(...), and the order will be on the rows for all columns:

    data2 <- data2[order(data2$`MergedData$User_ID`,
                -data2$`MergedData$Purchase`), ]