In my script I have transform this data.frame as shown:
df.modified<-transform(df, new.col= Payment.date-Selectionfinal$Invoice.Date)
This is the result:
Client.Code. Invoice.Date Payment.date new.col
1: 1004850 2016-01-31 2016-11-22 296 days
2: 1004850 2016-06-30 2016-11-22 145 days
3: 1004850 2016-06-30 2016-11-22 145 days
4: 1004850 2016-06-30 2016-11-22 145 days
5: 1004850 2016-09-30 2016-11-22 53 days
Then, i need to plot it into an histogram, but I have this problem:
> hist(df.modified[,c(4)])
Error in hist.default(Completo[, c(4)]) : 'x' must be numeric
This is the str of my df:
$ Client.Code.: int 1004850 1004850 1004850 1004850 1004850 1004850 1004850 1004874 1004874 1005133 ...
$ Invoice.Date: Date, format: "2016-01-31" "2016-06-30" "2016-06-30" "2016-06-30" ...
$ Payment.date: Date, format: "2016-11-22" "2016-11-22" "2016-11-22" "2016-11-22" ...
$ new.col :Class 'difftime' atomic [1:4430] 296 145 145 145 53 53 53 102 72 71 ...
Please i will like to know the trick for that. Thank you.
As Kristofersen already pointed out, the problem is in the type of what you pass as data to hist
function. The data is expected to be numeric
and does not accept difftime
.
# some data mimicking your data
Client.Code. <- c(1004850, 1004849, 1004850, 1004850, 1004851)
Invoice.Date <- as.Date(c("2016-01-31", "2016-03-30", "2016-06-30", "2016-06-30", "2016-04-30"))
Payment.date <- as.Date(c("2016-11-22", "2016-10-22", "2016-09-22", "2016-08-22", "2016-10-09"))
# creating the new column in a similar way to your way
df <- data.frame(Client.Code., Invoice.Date, Payment.date)
df$new.col <- df$Payment.date - df$Invoice.Date
## the following 3 do not work because they pass difftime to hist()
hist(df[,c(4)])
hist(df[,4])
hist(df$new.col)
# class of difftime
class(df$new.col)
## these 3 do work: numeric is passed to hist()
hist(as.numeric(df$new.col))
hist(as.numeric(df[,4]))
hist(as.numeric(df[,c(4)]))