2014-12-12 4 views
1

날짜 범위로 데이터를 서브 세트화해야하는데, 아래는 코드입니다.날짜별로 R에 데이터 테이블을 서브 세트

두 개의 .csv (data2010, data2)를 읽었습니다. 타임 스탬프를 제외하도록 날짜 형식을 변경하고 헤더의 이름을 변경하여 두 파일에서 동일하게 만든 다음 merge (data2011)하십시오.

파일이 실제로 병합되는 것처럼 보이지만 날짜 범위별로 부분 집합을 만들면 아무런 관측도 생성되지 않습니다.

그러나 날짜는 01/01/10 01/01/11 01/02/10 01/02/11 = 이므로 같은 달/같은 날/다른 연도 쌍으로 그룹화됩니다.

data2010 <- read.csv(file="2010final.csv") 
data2 <- read.csv(file="2011final.csv") 


#change format of timestamp to date with mm/dd/yyyy for 2011 
data2$newdate <-strptime(as.character(data2$Date), "%m/%d/%y") 
data2$Date <- format(data2$newdate, "%m/%d/%y") 
data2$newdate <- NULL 

#rename and format 2010 
names(data2010) <- c("Region", "District", "Age", "Gender", "Marital Status", "Date", "Reason") 
data2010$newdate <-strptime(as.character(data2010$Date), "%m/%d/%y %H") 
data2010$Date <- format(data2010$newdate, "%m/%d/%y") 
data2010$newdate <- NULL 

#merge 
data2011 <- rbind(data2010, data2) 

summary(data2011) 
str(data2011) 
#I see from the above commands that the files have merged 

jan6Before <- subset(data2011, Date >= "12/22/10" & Date <= "01/06/11") 
summary(jan6Before) 
str(jan6Before) 
#But this does not produce any observations 

답변

0

나는 당신의 Date 변수가 상수 다른 문자 즉 "12/22/10"에 비교되는, 문자, 데이트를하지 않기 때문에 그것의 생각한다.

패키지 lubridate을 살펴 보시기 바랍니다. 그런 다음 문자 (이 경우 월 - 날짜 - 연도)를 쉽게 비교할 수 있습니다 (예 : mdy(Date) >= mdy("12/22/10").

0

변수 newDate을 병합하고 하위 집합에도 사용하십시오.

관련 문제