首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >difftime()加十进制数

difftime()加十进制数
EN

Stack Overflow用户
提问于 2015-04-10 10:09:03
回答 2查看 1.8K关注 0票数 2

我正在尝试使用difftime()从一个特定的日期获取天数。如果我使用11月日期(10.11.14),它可以正常工作,如果我使用9月日期(10.09.14),它会将.0417添加到日期。知道我怎么解决这个问题吗?

代码语言:javascript
复制
head(dummydat)
reihe nummer bluh_datum
1     1      1   07.03.15
2     1      2   11.03.15
3     1      3   09.03.15
4     1      4       <NA>
5     1      5       <NA>
6     1      6   07.03.15

dummydat <- cbind(dummydat,"days"=as.numeric(difftime(strptime(dummydat$bluh_datum, format="%d.%m.%y"),strptime("10.11.14", format="%d.%m.%y"), units="days")))
> head(dummydat)
  reihe nummer bluh_datum days
1     1      1   07.03.15  117
2     1      2   11.03.15  121
3     1      3   09.03.15  119
4     1      4       <NA>   NA
5     1      5       <NA>   NA
6     1      6   07.03.15  117
> dummydat <- cbind(dummydat,"days"=as.numeric(difftime(strptime(dummydat$bluh_datum, format="%d.%m.%y"),strptime("10.09.14", format="%d.%m.%y"), units="days")))
> head(dummydat)
  reihe nummer bluh_datum days     days
1     1      1   07.03.15  117 178.0417
2     1      2   11.03.15  121 182.0417
3     1      3   09.03.15  119 180.0417
4     1      4       <NA>   NA       NA
5     1      5       <NA>   NA       NA
6     1      6   07.03.15  117 178.0417
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-10 10:32:15

而不是strptime,您可以这样使用as.Date

代码语言:javascript
复制
difftime(as.Date(dummydat$bluh_datum, format = "%d.%m.%y"), as.Date("10.11.14", format = "%d.%m.%y"), units = "days")
# Time differences in days
# [1] 117 121 119  NA  NA 117
difftime(as.Date(dummydat$bluh_datum, format = "%d.%m.%y"), as.Date("10.09.14", format = "%d.%m.%y"),  units = "days" )
# Time differences in days
# [1] 178 182 180  NA  NA 178

或者您必须像下面这样指定时区tz="GMT"

代码语言:javascript
复制
difftime(strptime(dummydat$bluh_datum, format="%d.%m.%y", tz = "GMT"), strptime("10.09.14", format="%d.%m.%y", tz = "GMT"), units="days")
# Time differences in days
# [1] 178 182 180  NA  NA 178
difftime(strptime(dummydat$bluh_datum, format="%d.%m.%y", tz = "GMT"),strptime("10.11.14", format="%d.%m.%y", tz = "GMT"), units="days")
# Time differences in days
# [1] 117 121 119  NA  NA 117

如果您没有指定时区,看看会发生什么

代码语言:javascript
复制
strptime(dummydat$bluh_datum, format="%d.%m.%y")
# [1] "2015-03-07 CET" "2015-03-11 CET" "2015-03-09 CET" NA               NA               "2015-03-07 CET"
strptime("10.09.14", format="%d.%m.%y")
## [1] "2014-09-10 CEST"

时区在日期之间将是不同的。

票数 2
EN

Stack Overflow用户

发布于 2015-04-10 14:48:42

如果你不想要小数,试试as.integer而不是as.numeric

代码语言:javascript
复制
c(as.numeric(difftime("2015-12-02", "2014-12-02")), as.numeric(difftime("2015-12-02", "2014-11-01")))
# [1] 365.0000 396.0417

c(as.integer(difftime("2015-12-02", "2014-12-02")), as.integer(difftime("2015-12-02", "2014-11-01")))
# [1] 365 396
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29558742

复制
相关文章

相似问题

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