반응형
요일 찾기
제가 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
편집: 다른 방법을 보여주기 위해...
그wday
a의 구성 요소POSIXlt
object는 주중 숫자(일요일부터 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
반응형
'programing' 카테고리의 다른 글
스프링 JPA:데이터를 손실하지 않고 전환하는 방법 (0) | 2023.07.15 |
---|---|
하나의 서버에 있는 두 개의 서로 다른 데이터베이스에 있는 테이블 간에 INER JOIN을 사용하여 쿼리 업데이트 (0) | 2023.07.15 |
HTML에서 Excel로:Excel에 열을 숫자로 처리하도록 지시하는 방법은 무엇입니까? (0) | 2023.07.15 |
INSERT INTO(SQL Server 2005)를 사용하여 여러 값 삽입 (0) | 2023.07.10 |
X11 이벤트 루프를 정상적으로 종료하려면 어떻게 해야 합니까? (0) | 2023.07.10 |