Hoe op te lossen in r: fout in as.date.numeric(x): 'origin' moet worden opgegeven
Een fout die je tegen kunt komen in R is:
Error in as.Date.numeric(x) : 'origin' must be supplied
Deze fout treedt meestal op wanneer u probeert een getal om te zetten naar een datum in R, maar geen originele datum kunt opgeven.
In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.
Hoe de fout te reproduceren
Stel dat we het volgende dataframe in R hebben dat de totale omzet weergeeft die een bedrijf over meerdere dagen heeft behaald:
#create data frame
df <- data. frame (date=c(27, 140, 180, 200),
sales=c(12, 22, 30, 31))
#view data frame
df
dirty dates
1 27 12
2 140 22
3 180 30
4,200 31
We kunnen de functie str() gebruiken om de structuur van het dataframe weer te geven:
#view structure of data frame
str(df)
'data.frame': 4 obs. of 2 variables:
$ date: num 27 140 180 200
$ sales: num 12 22 30 31
We kunnen zien dat de kolommen Datum en Verkoop beide numeriek zijn.
Stel nu dat we proberen de datumkolom naar een datumformaat te converteren:
#attempt to convert date column to date format df$date <- as. Date (df$date) Error in as.Date.numeric(df$date) : 'origin' must be supplied
We ontvangen een foutmelding omdat we het origin- argument niet hebben gebruikt in de functie as.Date() .
Hoe u de fout kunt oplossen
De manier om deze fout op te lossen is door eenvoudigweg een originele datum op te geven, zodat R weet hoe getallen naar datums moeten worden omgezet:
#convert date column to date format, using 2020-01-01 as origin date
df$date <- as. Date (df$date, origin=" 2020-01-01 ")
#view updated data frame
df
dirty dates
1 2020-01-28 12
2 2020-05-20 22
3 2020-06-29 30
4 2020-07-19 31
Door een oorsprongsdatum op te geven, converteerde R de getallen naar datums door het aantal dagen op te tellen bij de opgegeven oorsprong.
Bijvoorbeeld:
- De eerste datumwaarde van 27 is geconverteerd naar 28-01-2020 door 27 dagen toe te voegen aan de oorspronkelijke datum 01-01-2020.
- De tweede datumwaarde van 140 is omgezet naar 20-05-2020 door 140 dagen toe te voegen aan de oorspronkelijke datum van 01-01-2020.
Enzovoort.
We kunnen ook de functie class() gebruiken om te bevestigen dat de nieuwe kolom inderdaad een datum is:
#display class of date column
class(df$date)
[1] “Date”
De nieuwe kolom is nu een datum in plaats van een getal.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:
Oplossing in R: namen komen niet overeen met eerdere namen
Hoe op te lossen in R: de lengte van een langer object is geen veelvoud van de lengte van een korter object
Hoe op te lossen in R: contrasten kunnen alleen worden toegepast op factoren met 2 of meer niveaus