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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert