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

R 使用as.Date(x)-as.Date(y)后,有;“天”;在数字之后,r,R,希望这是一个简单的问题: 我在我的数据框中创建了一个列,它以两个日期列的日期为基准 我得到了正确的结果,但是当我再次调用这个数据框时,在这个新列中,我得到了数字后面的“天” 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)

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

我在我的数据框中创建了一个列,它以两个日期列的日期为基准

我得到了正确的结果,但是当我再次调用这个数据框时,在这个新列中,我得到了数字后面的“天”

 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=as.numeric(as.Date)(temp$INTERVIEWDATE,“%m/%d/%Y”)-
截止日期(临时$B日,“%m/%d/%Y”)/30.475)
而且,为了再次迭代,AGEMOS现在在每个数值后都有“天”

有没有办法摆脱这种情况或将其改为几年


谢谢

您可以将函数
用作带参数
单位的.numeric

as.numeric(as.Date("2017-08-20")-as.Date("2017-09-03"), units = "days")

您可以将函数
用作参数
单位的.numeric

as.numeric(as.Date("2017-08-20")-as.Date("2017-09-03"), units = "days")

您还可以使用
difftime
并指定您感兴趣的单位。例如
difftime(temp$BDAY,temp$INTERVIEWDATE,units=“days”
,只要参数是
日期类。

您还可以使用
difftime
并指定您感兴趣的单位。例如
difftime(temp$BDAY,temp$INTERVIEWDATE,units=“days”
只要它们的参数是一个
date
类。

要理解这个行为,你需要认识到减去两个日期并不会返回一个数值向量。它返回一个class
difftime

x <- as.Date("2017-05-11")
y <- as.Date("2017-01-23")

z <- x - y 

class(x) # Date
class(y) # Date
class(z) # difftime
我建议使用稍微安全一点的方法来计算时差

as.numeric(difftime(x, y, units = "days"))

实际上,我建议指定
units
参数;根据对象的接近程度,R中的单位自动选择可能并不总是相同的(对于日期/时间对象的
POSIXct
变量,这种情况更可能发生。通过指定要使用的单位,可以避免混淆。

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

x <- as.Date("2017-05-11")
y <- as.Date("2017-01-23")

z <- x - y 

class(x) # Date
class(y) # Date
class(z) # difftime
我建议使用稍微安全一点的方法来计算时差

as.numeric(difftime(x, y, units = "days"))
实际上,我建议指定
units
参数;根据对象的接近程度,R中的单位自动选择可能并不总是相同的(对于
POSIXct
变量,即日期/时间对象,这更可能是正确的。通过指定要使用的单位,可以避免混淆