亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以星期,月,季度和年為單位獲取日期之間的差異

以星期,月,季度和年為單位獲取日期之間的差異

素胚勾勒不出你 2019-08-02 16:37:19
以星期,月,季度和年為單位獲取日期之間的差異我有兩個日期let's說14.01.2013和26.03.2014。我希望以周(?),月(在示例14中),季度(4)和年(1)中得到這兩個日期之間的差異。你知道最好的方法嗎?
查看完整描述

3 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

那這個呢:


# get difference between dates `"01.12.2013"` and `"31.12.2013"`


# weeks

difftime(strptime("26.03.2014", format = "%d.%m.%Y"),

strptime("14.01.2013", format = "%d.%m.%Y"),units="weeks")

Time difference of 62.28571 weeks


# months

(as.yearmon(strptime("26.03.2014", format = "%d.%m.%Y"))-

as.yearmon(strptime("14.01.2013", format = "%d.%m.%Y")))*12

[1] 14


# quarters

(as.yearqtr(strptime("26.03.2014", format = "%d.%m.%Y"))-

as.yearqtr(strptime("14.01.2013", format = "%d.%m.%Y")))*4

[1] 4


# years

year(strptime("26.03.2014", format = "%d.%m.%Y"))-

year(strptime("14.01.2013", format = "%d.%m.%Y"))

[1] 1

as.yearmon()并且as.yearqtr()在包裝中zoo。year()在包中lubridate。你怎么看?


查看完整回答
反對 回復 2019-08-02
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

所有現有的答案都是不完美的(IMO),要么對所需的輸出做出假設,要么不為所需的輸出提供靈活性。

根據OP中的示例和OP所述的預期答案,我認為這些是您正在尋找的答案(以及一些可以輕松推斷的其他示例)。

(這只需要基地R,不需要動物園或勞動力)

轉換為Datetime對象

date_strings = c("14.01.2013", "26.03.2014")datetimes = strptime(date_strings, format = "%d.%m.%Y") # convert to datetime objects

天數的差異

您可以在幾天內使用差異來獲得我們以后的一些答案

diff_in_days = difftime(datetimes[2], datetimes[1], units = "days") # daysdiff_in_days#Time difference of 435.9583 days

周的差異

差異周是一個特殊的情況下,units = "weeks"difftime()

diff_in_weeks = difftime(datetimes[2], datetimes[1], units = "weeks") # weeksdiff_in_weeks#Time difference of 62.27976 weeks

請注意,這與將diff_in_days除以7(一周7天)相同

as.double(diff_in_days)/7#[1] 62.27976

多年的差異

使用類似的邏輯,我們可以從diff_in_days中獲得數年

diff_in_years = as.double(diff_in_days)/365 # absolute yearsdiff_in_years#[1] 1.194406

你似乎期待多年來的差異是“1”,所以我假設你只想計算絕對日歷年或其他東西,你可以通過使用它輕松做到 floor()

# get desired output, given your definition of 'years'floor(diff_in_years)#[1] 1

宿舍的差異

# get desired output for quarters, given your definition of 'quarters'floor(diff_in_years * 4)#[1] 4

幾個月的差異

可以將其計算為diff_years的轉換

# months, defined as absolute calendar months (this might be what you want, given your question details)months_diff = diff_in_years*12floor(month_diff)#[1] 14

我知道這個問題已經過時了,但考慮到我現在仍然需要解決這個問題,我想我會加上我的答案。希望能幫助到你。


查看完整回答
反對 回復 2019-08-02
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

幾周,你可以使用功能difftime

date1 <- strptime("14.01.2013", format="%d.%m.%Y")date2 <- strptime("26.03.2014", format="%d.%m.%Y")difftime(date2,date1,units="weeks")Time difference of 62.28571 weeks

但是difftime持續數周不起作用。
以下是cut.POSIXt用于這些持續時間的非常不理想的解決方案,但您可以解決它:

seq1 <- seq(date1,date2, by="days")nlevels(cut(seq1,"months"))15nlevels(cut(seq1,"quarters"))5nlevels(cut(seq1,"years"))2

然而,這是您的時間間隔跨越的月數,季度或年數,而不是您的時間間隔的持續時間,以月,季度,年為單位(因為那些沒有恒定的持續時間)。考慮到你對@SvenHohenstein做出的評論,我認為你可以用它nlevels(cut(seq1,"months")) - 1來實現你想要實現的目標。


查看完整回答
反對 回復 2019-08-02
  • 3 回答
  • 0 關注
  • 717 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號