A: ifelse()가 날짜를 숫자로 변환하는 것을 방지합니다.


기본 R의 ifelse() 함수는 기본적으로 날짜 객체를 숫자 객체로 변환합니다.

이러한 일이 발생하지 않도록 하려면 다음 방법 중 하나를 대안으로 사용할 수 있습니다.

방법 1: Base R에서 as.character() 사용

 df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ',
                   as. character (df$date+5),
                   as. character (df$date)))

방법 2: dplyr에서 if_else() 사용

 df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)

방법 3: data.table에서 fifelse() 사용

 df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date)

다음 예에서는 R의 다음 데이터 프레임을 사용하여 실제로 각 메서드를 사용하는 방법을 보여줍니다.

 #create data frame
df <- data. frame (date=as. Date (c('2022-01-05', '2022-01-17', '2022-01-22',
                        '2022-01-23', '2022-01-29', '2022-02-13')),
                 sales=c(22, 35, 24, 20, 16, 19))

#view data frame
df

        dirty date
1 2022-01-05 22
2 2022-01-17 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

예제 1: 기본 R에서 as.character() 사용

다음 코드는 R 기본 ifelse( ) 함수와 함께 as.character() 함수를 사용하여 데이터 프레임의 날짜 열에 if else 문을 수행하고 결과로 날짜를 생성하는 방법을 보여줍니다.

 #if date is before 2022-01-20 then add 5 days
df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ',
                   as. character (df$date+5),
                   as. character (df$date)))

#view updated data frame
df

        dirty dates
1 2022-01-10 22
2 2022-01-22 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

날짜 열의 값이 2022년 1월 20일 이전인 경우 날짜에 5일을 추가했습니다.

날짜 열은 숫자 형식으로 변환되지 않고 날짜 형식을 유지했습니다.

예 2: dplyr에서 if_else() 사용

다음 코드는 dplyr의 if_else() 함수를 사용하여 데이터 프레임의 날짜 열에 대해 if else 문을 수행하고 결과로 날짜를 생성하는 방법을 보여줍니다.

 library (dplyr)

#if date is before 2022-01-20 then add 5 days
df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)

#view updated data frame
df

        dirty date
1 2022-01-10 22
2 2022-01-22 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

날짜 열의 값이 2022년 1월 20일 이전인 경우 날짜에 5일을 추가했습니다.

날짜 열은 숫자 형식으로 변환되지 않고 날짜 형식을 유지했습니다.

예 3: data.table에서 fifelse() 사용

다음 코드는 data.table의 fifelse() 함수를 사용하여 데이터 프레임의 날짜 열에 if else 문을 수행하고 결과로 날짜를 생성하는 방법을 보여줍니다.

 library (data.table)

#if date is before 2022-01-20 then add 5 days
df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date)

#view updated data frame
df

        dirty dates
1 2022-01-10 22
2 2022-01-22 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

날짜 열의 값이 2022년 1월 20일 이전인 경우 날짜에 5일을 추가했습니다.

이번에도 날짜 열은 숫자 형식으로 변환되지 않고 날짜 형식을 유지했습니다.

참고 : 매우 큰 데이터 프레임의 경우 dplyr 및 data.table 메서드는 기본 R 메서드보다 빠릅니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

R에서 중첩된 If Else 문을 작성하는 방법
R에서 사례 설명을 작성하는 방법
R의 데이터 프레임에 여러 열을 추가하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다