13

年の最初の日から始まる日付を日数に変換するにはどうすればよいですか。

以下を期待される結果に変換するにはどうすればよいですか?

   Date               
02/01/2000         
20/02/2000         
12/12/2000         
13/01/2001   

以下は期待される結果です。

Date               NumDays  TotalDays
02/01/2000          1          1
20/02/2000          51         51
12/12/2000          346        346
13/01/2001          13         379
4

7 に答える 7

15

lubridate パッケージを使用したソリューションは次のとおりです。

library(lubridate)

x <- c("02/01/2000", "20/02/2000", "12/12/2000", "13/01/2001")
date <- dmy(x)

days <- yday(date) - 1 # so Jan 1 = day 0 
total_days <- cumsum(days)
于 2013-10-24T21:11:32.097 に答える
10

データセットをロードする

df <- structure(list(Date = structure(c(1L, 4L, 2L, 3L), .Label = c("02/01/2000", 
"12/12/2000", "13/01/2001", "20/02/2000"), class = "factor"), 
    Date2 = structure(c(10958, 11007, 11303, 11335), class = "Date"), 
    NumDays = structure(c(1, 50, 346, 378), units = "days", class = "difftime")), .Names = c("Date", 
"Date2", "NumDays"), row.names = c(NA, -4L), class = "data.frame")

日付のフォーマット:

startdate <- as.Date("01/01/2000","%d/%m/%Y")
df$Date2 <-  as.Date(df$Date,"%d/%m/%Y")

difftime日数の差を計算するために使用します

df$NumDays  <- difftime(df$Date2,startdate ,units="days")

df

         Date      Date2  NumDays
# 1 02/01/2000 2000-01-02   1 days
# 2 20/02/2000 2000-02-20  50 days
# 3 12/12/2000 2000-12-12 346 days
# 4 13/01/2001 2001-01-13 378 days
于 2013-10-24T12:54:51.203 に答える
2

これが役立つと思います:

使用するas.Date()

例:

one <- as.Date(c("02/01/2000", "01/01/2000"))

2000 年 2 月 1 日から 2000 年 2 月 1 日までの日数:

days <- one[1] - one[2]
于 2013-10-24T11:52:48.387 に答える
1

datetime フォーマット フラグは、%j0 から始まる年間通算日を示します。

d <- read.table(text='Date
02/01/2000         
20/02/2000         
12/12/2000         
13/01/2001', header=TRUE)

d<-transform(d, NumDays=as.numeric(strftime(as.Date(Date, format='%d/%m/%Y'), '%j'))-1)
#         Date NumDays
# 1 02/01/2000       1
# 2 20/02/2000      50
# 3 12/12/2000     346
# 4 13/01/2001      12

次に、を追加するには、いくつかのモジュラー演算でTotalDays使用できます。cumsum

transform(d, TotalDays=cumsum(c(1, ifelse(diff(NumDays) > 0, diff(NumDays), diff(NumDays) %% 365 + 1))))
#         Date NumDays TotalDays
# 1 02/01/2000       1         1
# 2 20/02/2000      50        50
# 3 12/12/2000     346       346
# 4 13/01/2001      12       378

または、この短い代替手段を使用してください。

transform(d, TotalDays=cumsum(c(1, diff(as.Date(Date, format='%d/%m/%Y')))))
于 2013-10-24T12:02:56.763 に答える
0

このソリューションを使用して、日数を取得することもできます。

mydates <- as.Date(c("2007-06-22", "2004-02-13")) days <- mydates[1] - mydates[2] days <- as.numeric(days) [1] 1225

于 2018-08-03T10:53:12.320 に答える