如何修复 r: as.date.numeric(x) 中的错误:必须提供“origin”
在 R 中您可能遇到的错误是:
Error in as.Date.numeric(x) : 'origin' must be supplied
当您尝试将数字转换为 R 中的日期但无法提供原始日期时,通常会发生此错误。
本教程准确解释了如何修复此错误。
如何重现错误
假设我们在 R 中有以下数据框,显示一家公司几天内的总销售额:
#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
我们可以使用str()函数来显示数据框的结构:
#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
我们可以看到日期和销售额列都是数字。
现在假设我们尝试将日期列转换为日期格式:
#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
我们收到错误,因为我们没有在as.Date()函数中使用origin参数。
如何修复错误
修复此错误的方法是简单地提供原始日期,以便 R 知道如何将数字转换为日期:
#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
通过提供起始日期,R 通过将天数添加到提供的起始日期,将数字转换为日期。
例如:
- 第一个日期值27通过在原始日期 2020-01-01 的基础上添加 27 天而转换为2020-01-28 。
- 通过在原始日期01/01/2020基础上添加 140 天,将第二个日期值140转换为 05/20/2020。
等等。
我们还可以使用class()函数来确认新列确实是日期:
#display class of date column
class(df$date)
[1] “Date”
新列现在是日期而不是数字。
其他资源
以下教程解释了如何解决 R 中的其他常见错误:
如何在 R 中修复:名称与以前的名称不匹配
如何在 R 中修复:较长物体的长度不是较短物体长度的倍数
如何在 R 中修复:对比只能应用于具有 2 个或更多级别的因子