R에서는 날짜 (일)과 주간의 벡터를 어떻게 연관시킬 수 있습니까?일을 일주일 단위로 그룹화하려면 어떻게해야합니까?
편집 : '주'는 해당 연도가 아닌 해당 날짜 범위의 주간 색인이어야합니다. 애매한 것에 대해 사과드립니다.
R에서는 날짜 (일)과 주간의 벡터를 어떻게 연관시킬 수 있습니까?일을 일주일 단위로 그룹화하려면 어떻게해야합니까?
편집 : '주'는 해당 연도가 아닌 해당 날짜 범위의 주간 색인이어야합니다. 애매한 것에 대해 사과드립니다.
첫 번째 기록 이후 7 일 간격이 완료 되었습니까?
dvec <- as.Date("2001-04-01")+0:90
dweek <- as.numeric(dvec-dvec[1]) %/% 7
dweek[1:21]
# [1] 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2
공제를위한 +1 –
@ GavinSimpson : 공제를위한 기초가 된 당신의 노력이기 때문에 나는 또한 "+() - ed"를 사용합니다. (이제 "@Gavin"을 입력 할 때 "Gavin Simpson"팝업이 나타납니다.) –
그리고 정수 나누기 함수 '%/%'를 좋아해야합니다. 나는 할 수 있었다 - 응답은 진짜로 아주 청초하고 간결하다. –
의 strftime는 ... 당신의 친구입니다 당신은 월, 주 또는 년 이내에 하루 하루 의미합니까 어떤 방식으로
? strftime # to see the help and the format
set.seed(1)
dates <- Sys.Date() + sample(1:365, size = 10)
R> dates
[1] "2012-02-11" "2012-03-21" "2012-06-01" "2012-09-30"
[5] "2012-01-18" "2012-09-25" "2012-10-11" "2012-06-30"
[9] "2012-06-18" "2011-11-28"
# %j for julian day - number of the day since the 1st of january each year
R> strftime(dates, format = "%j") # or format(dates, format = "%j")
[1] "042" "081" "153" "274" "018" "269" "285" "182" "170" "332"
R> strftime(dates, format = "%w")
[1] "6" "3" "5" "0" "3" "2" "4" "6" "1" "1"
# my locale is in French so...
R> strftime(dates, format = "%A")
[1] "samedi" "mercredi" "vendredi" "dimanche" "mercredi"
[6] "mardi" "jeudi" "samedi" "lundi" "lundi"
?
%W
형식 자리 표시자를 사용하여 각 날짜에 대해 format()
을 통해 서식을 지정하여 각 날짜에 속한 연도를 가져옵니다. %U
은 일요일을 주일의 첫 번째 요일로 취급하는 반면, %W
은 요일을 월요일의 첫날로 간주합니다.
now <- as.Date(Sys.time())
dates <- seq(now, now + 25, by = "1 day")
dat <- data.frame(Dates = dates, Week = format(dates, format = "%W"))
head(dat, 10)
제공 : 예를 들면 다음과 같습니다
> head(dat, 10)
Dates Week
1 2011-11-06 44
2 2011-11-07 45
3 2011-11-08 45
4 2011-11-09 45
5 2011-11-10 45
6 2011-11-11 45
7 2011-11-12 45
8 2011-11-13 45
9 2011-11-14 46
10 2011-11-15 46
을 당신이 원하는 정확하게 귀하의 질문에서 불분명하지만이 방법이 아니라, 내 데이터 프레임 (날짜의 벡터에 맞게 위의 dat
)는 merge()
입니다.
> merge(dat, weekdat)
Week Dates Price
1 44 2011-11-06 10
2 45 2011-11-07 20
3 45 2011-11-08 20
4 45 2011-11-09 20
5 45 2011-11-10 20
6 45 2011-11-11 20
7 45 2011-11-12 20
8 45 2011-11-13 20
9 46 2011-11-14 25
10 46 2011-11-15 25
11 46 2011-11-16 25
12 46 2011-11-17 25
13 46 2011-11-18 25
14 46 2011-11-19 25
15 46 2011-11-20 25
16 47 2011-11-21 30
17 47 2011-11-22 30
18 47 2011-11-23 30
19 47 2011-11-24 30
20 47 2011-11-25 30
21 47 2011-11-26 30
22 47 2011-11-27 30
23 48 2011-11-28 20
24 48 2011-11-29 20
25 48 2011-11-30 20
26 48 2011-12-01 20
다른 있습니다
weekdat <- data.frame(Week = 44:50, Price = c(10, 20, 25, 30, 20, 15, 10))
그런 다음 우리가 그렇게 merge()
를 사용 weekdat
와 dat
를 연결할 수 있습니다 : 우리는 우리가에 대해 일치 할 주 벡터 및 데이터 프레임 weekdat
에서 일부 관련 데이터가 있다고 가정 해 매주 날짜를 매칭하거나 연결하는 방법은 있지만, 위의 내용은 당신에게 어떤 것을 할 수있는 기회를 줄 것입니다.
'lubridate' 패키지를 살펴보면'dates'를 매우 쉽게 처리 할 수 있습니다. 예를 들어'week (x)'는 날짜 x의 주 숫자를 반환합니다. – Ramnath
-1 편집을 다시하십시오 - 개인 주 색인을 소유하고 있는지 어떻게 알 수 있습니까? i) 이전에 알려주지 않고 ii) ** 데이터 ** 또는 그 일부를 보여 주시겠습니까? –
@ GavinSimpson- 당신 말이 맞아요. 나는 분명히해야했다. – JohnRos