2015-02-07 2 views
0

날짜가있는 데이터 프레임 (df)이 있습니다. 그 샘플은 다음과 같습니다 :날짜가있는 명세서에 R

df<- as.data.frame(as.factor(c("16.04.2015", "04.08.2014", "11.09.2013", "20.11.2015", "04.04.2014"))) 
colnames(df)<-"date" 

즉;

date 
16.04.2015 
04.08.2014 
11.09.2013 
20.11.2015 
04.04.2014 

두 특정 날짜 사이에 "1"을 지정하고 싶습니다. 내가 10.02.2014와 15.08.2014 사이에 "1"날짜를 지정하려고한다고합시다. "값"열을 할당 값으로 정의하십시오. 따라서 원하는 출력은 다음과 같습니다.

date  value 
16.04.2015 0 
04.08.2014 1 
11.09.2013 0 
20.11.2015 0 
04.04.2014 1 

R의 문장을 사용하여 어떻게 할 수 있습니까? 아니면 다른 방법이 있습니까? 나는 어떤 도움을 주셔서 대단히 기뻐하실 것입니다. 고마워.

답변

3

당신은 통념 data.table

library(data.table) 
setDT(df)[, value:=(as.Date(date, '%d.%m.%Y') %between% 
         c('2014-02-10', '2014-08-15'))+0L][] 
#   date value 
#1: 16.04.2015  0 
#2: 04.08.2014  1 
#3: 11.09.2013  0 
#4: 20.11.2015  0 
#5: 04.04.2014  1 
+0

덕분에 많이 사용 확실히 필요가 없습니다. 그것은 아주 잘 작동합니다. 감사합니다. – oercim

+0

@oercim 기꺼이 도와 드리겠습니다. – akrun

2

반대에서 between을 사용할 수 있습니다, 데이터 테이블을

df <- data.frame(date = as.Date(c("16.04.2015", "04.08.2014", "11.09.2013", 
            "20.11.2015", "04.04.2014"), '%d.%m.%Y')) 



`%between%` <- function(x, interval) x >= interval[1] & x <= interval[2] 

df <- within(df, value <- 1 * (date %between% as.Date(c('2014-02-10', '2014-08-15')))) 

#   date value 
# 1 2015-04-16  0 
# 2 2014-08-04  1 
# 3 2013-09-11  0 
# 4 2015-11-20  0 
# 5 2014-04-04  1 
관련 문제