首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用as.Date(x) - as.Date(y)后,在数字之后有“天”

在使用as.Date(x) - as.Date(y)后,在数字之后有“天”
EN

Stack Overflow用户
提问于 2017-09-18 15:35:07
回答 3查看 36关注 0票数 0

希望这是一个简单的问题:

我正在我的data_frame中创建一个列,它接受两个日期列的日期差异。

我得到了正确的结果,但是当我再次调用这个数据框架时,在这个新的专栏中,我得到了数字后面写的"days“。

代码语言:javascript
复制
 my code is:

 temp <- temp %>%
 mutate(AGEMOS = as.numeric(as.Date(temp$INTERVIEWDATE,"%m/%d/%Y")-
                 as.Date(temp$BDAY,"%m/%d/%Y")) / 30.475)

而且,为了重新迭代,AGEMOS现在有“在每个数值之后写入的天数”。

有没有办法摆脱这个问题或者把它改到几年?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-18 15:40:45

可以将函数as.numeric与参数units一起使用。

代码语言:javascript
复制
as.numeric(as.Date("2017-08-20")-as.Date("2017-09-03"), units = "days")
票数 1
EN

Stack Overflow用户

发布于 2017-09-18 15:54:40

要理解这种行为,您需要认识到减去两个日期并不返回数字向量。它返回difftime类的向量。

代码语言:javascript
复制
x <- as.Date("2017-05-11")
y <- as.Date("2017-01-23")

z <- x - y 

class(x) # Date
class(y) # Date
class(z) # difftime

difftime对象有自己的print方法,为了清晰起见,它打印units属性。这可能会造成混乱,因为后续操作不能更改单元,但是difftime对象的difftime属性不会改变。

代码语言:javascript
复制
z / 30
Time difference of 3.6 days

我推荐一种比较安全的计算时间差的方法。

代码语言:javascript
复制
as.numeric(difftime(x, y, units = "days"))

实际上,我建议指定units参数;根据对象的紧密程度,R中单元的自动选择可能并不总是相同的(对于POSIXct变量(即日期/时间对象),这更有可能是正确的)。通过指定要使用的单元,可以避免混淆。

票数 2
EN

Stack Overflow用户

发布于 2017-09-18 15:54:35

您还可以使用difftime并指定您感兴趣的单元。即difftime(temp$BDAY, temp$INTERVIEWDATE, units = "days",只要它们的参数是date类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46283192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档