相关疑难解决方法(0)

如何防止ifelse()将Date对象转换为数字对象

我正在使用该函数ifelse()来操作日期向量.我期望结果是类Date,并且很惊讶地得到了一个numeric向量.这是一个例子:

dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'))
dates <- ifelse(dates == '2011-01-01', dates - 1, dates)
str(dates)
Run Code Online (Sandbox Code Playgroud)

这尤其令人惊讶,因为在整个向量上执行操作会返回一个Date对象.

dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05'))
dates <- dates - 1
str(dates)
Run Code Online (Sandbox Code Playgroud)

我应该使用其他功能来操作Date矢量吗?如果是这样,有什么功能?如果没有,我如何强制ifelse返回与输入相同类型的向量?

帮助页面ifelse表明这是一个功能,而不是一个错误,但我仍然在努力寻找一个解释我发现的令人惊讶的行为.

datetime if-statement r

136
推荐指数
6
解决办法
3万
查看次数

R ifelse 避免更改日期格式

我正在尝试为两个日期制作 ifesle。我有两列 - DateIn 和 DateOut。我需要添加第三个变量,如果有日期值,它将显示“DateOut”,如果有则显示 DateIn:

DateIn     DateOut     Travel date
2010-11-24 <NA>        2010-11-24
2011-12-21 2012-01-21  2012-01-21
2010-10-25 2010-11-25  2010-11-25
2014-01-14 <NA>        2014-01-14
Run Code Online (Sandbox Code Playgroud)

我试着这样做

TravelDate <- ifelse(is.na(DateIn), DateOut, DateIn)
Run Code Online (Sandbox Code Playgroud)

但我刚开始的结果是:

    DateIn     DateOut     Travel date
2010-11-24 <NA>            15018
2011-12-21 2012-01-21      15151
2010-10-25 2010-11-25      14972
2014-01-14 <NA>            14972
Run Code Online (Sandbox Code Playgroud)

旅行日期被归类为“逻辑”有没有办法在不将日期转换为数字的情况下实现结果?

非常感谢!

numbers r date

3
推荐指数
1
解决办法
3687
查看次数

标签 统计

r ×2

date ×1

datetime ×1

if-statement ×1

numbers ×1