R 出发和返回日期的数据框,如何获得所有日期的列表?
我在计算旅行日期时遇到了一个难题。我有一个出发日期和返回日期的数据框R 出发和返回日期的数据框,如何获得所有日期的列表?,r,date,seq,R,Date,Seq,我在计算旅行日期时遇到了一个难题。我有一个出发日期和返回日期的数据框 Departure Return 1 7/6/13 8/3/13 2 7/6/13 8/3/13 3 6/28/13 8/7/13 我想创建并传递一个函数,该函数将获取这些日期并形成一个所有日期的列表。我可以通过将每列转换为日期来单独完成这项工作 ## Turn the departure and return dates into a readable format Dept <- as.Da
Departure Return
1 7/6/13 8/3/13
2 7/6/13 8/3/13
3 6/28/13 8/7/13
我想创建并传递一个函数,该函数将获取这些日期并形成一个所有日期的列表。我可以通过将每列转换为日期来单独完成这项工作
## Turn the departure and return dates into a readable format
Dept <- as.Date(travelDates$Dept, format = "%m/%d/%y")
Retn <- as.Date(travelDates$Retn, format = "%m/%d/%y")
travel_dates <- na.omit(data.frame(dept_dates,retn_dates))
seq(from = travel_dates[1,1], to = travel_dates[1,2], by = 1)
我得到这个错误:
Error in seq.Date(from = x, to = y, by = 1) : 'from' must be of length 1
这可能有很多错误,但我真正需要的帮助是如何通过seq()
运行多个日期
抱歉,如果这很简单的话(我还在学习用r思考),对于任何违反礼仪的行为也很抱歉。谢谢。编辑:根据OP评论更新 这个怎么样:
travel_dates[] <- lapply(travel_dates, as.Date, format="%m/%d/%y")
dts <- with(travel_dates, mapply(seq, Departure, Return, by="1 day"))
旧代码: 下面是每次旅行的天数,而不是日期列表
transform(travel_dates, days_away=Return - Departure + 1)
产生:
# Departure Return days_away
# 1 2013-07-06 2013-08-03 29 days
# 2 2013-07-06 2013-08-03 29 days
# 3 2013-06-28 2013-08-07 41 days
如果你想把
days\u放在一个单独的列表中,这很简单,不过把它作为数据框的一个附加列似乎更有用。也许应用函数可以帮助你将所有内容转换为日期,并从中提取列表谢谢。但很抱歉我不清楚。我在寻找一个人每天离开的日期,而不仅仅是天数。这就是我尝试使用seq()的原因。我项目的第二步是计算出一年中大多数人不在办公室的日子。也感谢您向我介绍transform()。@user330742,请参阅编辑。我想这解决了你的问题。谢谢!它很有魅力!我非常感激。我学到了很多。
transform(travel_dates, days_away=Return - Departure + 1)
# Departure Return days_away
# 1 2013-07-06 2013-08-03 29 days
# 2 2013-07-06 2013-08-03 29 days
# 3 2013-06-28 2013-08-07 41 days