programing

요일 찾기

goodsources 2023. 7. 15. 10:03
반응형

요일 찾기

제가 R에 날짜가 있고 다음과 같은 형식으로 되어 있다고 가정해 보겠습니다.

   date      
2012-02-01 
2012-02-01
2012-02-02

R에서 날짜와 연관된 요일이 있는 다른 열을 추가할 수 있는 방법이 있습니까?데이터 세트가 정말 크기 때문에 수동으로 진행하여 변경하는 것은 의미가 없습니다.

df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02")) 

따라서 날짜를 추가한 후에는 다음과 같이 표시됩니다.

   date       day
2012-02-01   Wednesday
2012-02-01   Wednesday
2012-02-02   Thursday

이것이 가능합니까?누가 제가 이것을 할 수 있는 소포를 가리켜 줄 수 있나요?날짜별로 자동으로 날짜를 생성하려고 합니다.

df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02")) 
df$day <- weekdays(as.Date(df$date))
df
##         date       day
## 1 2012-02-01 Wednesday
## 2 2012-02-01 Wednesday
## 3 2012-02-02  Thursday

편집: 다른 방법을 보여주기 위해...

wdaya의 구성 요소POSIXltobject는 주중 숫자(일요일부터 0-6까지)입니다.

as.POSIXlt(df$date)$wday
## [1] 3 3 4

평일 이름의 문자 벡터를 부분 집합화하는 데 사용할 수 있습니다.

c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", 
    "Friday", "Saturday")[as.POSIXlt(df$date)$wday + 1]
## [1] "Wednesday" "Wednesday" "Thursday" 

사용lubridate패키지 및 기능wday:

library(lubridate)
df$date <- as.Date(df$date)
wday(df$date, label=TRUE)
[1] Wed   Wed   Thurs
Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat

찾다?strftime:

%A현재 로케일의 전체 평일 이름

df$day = strftime(df$date,'%A')

한 주를 일요일에 기본값이 아닌 월요일에 시작하기를 추가로 원한다고 가정해 보겠습니다. 그러면 다음과 같은 방법이 유용합니다.

require(lubridate)
df$day = ifelse(wday(df$time)==1,6,wday(df$time)-2)

결과는 [0,...,6] 간격의 일입니다.

간격을 [1,...7]로 설정하려면 다음을 사용합니다.

df$day = ifelse(wday(df$time)==1,7,wday(df$time)-1)

또는 다음을 수행합니다.

df$day = df$day + 1

이것이 효과가 있을 것입니다.

df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02")) 
dow <- function(x) format(as.Date(x), "%A")
df$day <- dow(df$date)
df

#Returns:
        date       day
1 2012-02-01 Wednesday
2 2012-02-01 Wednesday
3 2012-02-02  Thursday
start = as.POSIXct("2017-09-01")
end = as.POSIXct("2017-09-06")

dat = data.frame(Date = seq.POSIXt(from = start,
                                   to = end,
                                   by = "DSTday"))

# see ?strptime for details of formats you can extract

# day of the week as numeric (Monday is 1)
dat$weekday1 = as.numeric(format(dat$Date, format = "%u"))

# abbreviated weekday name
dat$weekday2 = format(dat$Date, format = "%a")

# full weekday name
dat$weekday3 = format(dat$Date, format = "%A")

dat
# returns
    Date       weekday1 weekday2  weekday3
1 2017-09-01        5      Fri    Friday
2 2017-09-02        6      Sat    Saturday
3 2017-09-03        7      Sun    Sunday
4 2017-09-04        1      Mon    Monday
5 2017-09-05        2      Tue    Tuesday
6 2017-09-06        3      Wed    Wednesday

JStrahl의 양식 주석format(as.Date(df$date),"%w")현재 날짜의 수를 얻습니다.as.numeric(format(as.Date("2016-05-09"),"%w"))

언급URL : https://stackoverflow.com/questions/9216138/find-the-day-of-a-week

반응형