从 R 中的日期列计算并添加列 length_of_time
Calculate & add column length_of_time from date column in R
我正在尝试创建一个新的计算字段,length_of_time
。我有一列 final_date,日期为:
2/10/2016
4/4/2016
5/8/2016
10/1/2016
我正在尝试计算一个显示 2016 年 10 月 23 日和 final_date 之间的时间长度的新字段。
我尝试使用 dplyr:
mutate(df, length_of_time = 10/23/2016 - final_date)
并收到错误:
"Error in eval(substitute(expr), envir, enclos) :
can only subtract from "POSIXt" objects"
所以我尝试使用:
df <- as.POSIXlt(df$final_date)
再次运行我的原始代码,只收到以下错误:
Error in UseMethod("mutate_") :
no applicable method for 'mutate_' applied to an object of class "c('POSIXlt', 'POSIXt')"
您的日期格式有点混乱。 (解释见代码注释)
library(dplyr)
df <- data.frame(final_date = c("2/10/2016","4/4/2016"))
## you need to specify the format of your date columns as it is ambiguous
## I've guessed you're using day/month/year
df$final_date <- as.POSIXct(df$final_date, format = "%d/%m/%Y")
## and you need to subtract the `final_date` (which is POSIXct)
## from another POSIXct object
mutate(df, length_of_time = as.POSIXct("2016-10-23") - final_date)
final_date length_of_time
1 2016-10-02 20.95833 days
2 2016-04-04 201.95833 days
进一步阅读
帮助理解 POSIXct
和 POSIXlt
之间的区别、日期格式、日期计算等
我正在尝试创建一个新的计算字段,length_of_time
。我有一列 final_date,日期为:
2/10/2016
4/4/2016
5/8/2016
10/1/2016
我正在尝试计算一个显示 2016 年 10 月 23 日和 final_date 之间的时间长度的新字段。
我尝试使用 dplyr:
mutate(df, length_of_time = 10/23/2016 - final_date)
并收到错误:
"Error in eval(substitute(expr), envir, enclos) : can only subtract from "POSIXt" objects"
所以我尝试使用:
df <- as.POSIXlt(df$final_date)
再次运行我的原始代码,只收到以下错误:
Error in UseMethod("mutate_") :
no applicable method for 'mutate_' applied to an object of class "c('POSIXlt', 'POSIXt')"
您的日期格式有点混乱。 (解释见代码注释)
library(dplyr)
df <- data.frame(final_date = c("2/10/2016","4/4/2016"))
## you need to specify the format of your date columns as it is ambiguous
## I've guessed you're using day/month/year
df$final_date <- as.POSIXct(df$final_date, format = "%d/%m/%Y")
## and you need to subtract the `final_date` (which is POSIXct)
## from another POSIXct object
mutate(df, length_of_time = as.POSIXct("2016-10-23") - final_date)
final_date length_of_time
1 2016-10-02 20.95833 days
2 2016-04-04 201.95833 days
进一步阅读
帮助理解 POSIXct
和 POSIXlt
之间的区别、日期格式、日期计算等