2016-08-05 7 views
0

R에서 데이터 프레임이 data입니다.문자열에서 부분 집합하는 방법

head (data) gives 
ID sign_in 
21 23:50:21 
12 10:11:38 
... 

해당 ID의 ID 및 로그인 시간이 포함됩니다. 두 열 모두 문자열 (또는 문자)입니다. 10시에서 11시 사이의 시간 간격으로 ID가 포함 된 data의 하위 집합을 원한다고 가정 해보십시오.

data_new = subset(data, data[,2] %in% as.character(10:00:00) : as.character(11:00:00)) 

하지만, R은 오류라는 오류 메시지가 있습니다 :

이 내가 그것을 해결하기 위해 시도하는 방법이다 예상치 못한

나는이 문제를 어떻게 해결할 수 상수를? 당신은에 의해 "POSIXct" "POSIXt" 형식으로 문자 열을 변환 할 수 있습니다

+1

당신이 as.character (10시'을 위해해야 ​​할 R 기대했던 것 : 00) : as.character (11:00:00)'? R 구문 분석기는 내부에서 파싱합니다. 그래서 먼저'10 : 00 : 00'을 파싱하려고 시도했지만':'는'10 : 0' 만 처리 할 수 ​​있습니다. 그러면이 벡터는 두 번째 벡터와 같은 문자로 변환됩니다. 그런 다음 두 문자 벡터에서':'를 실행하려고 시도했지만':'함수는 스칼라 값만 받아 들일 수 있습니다. 코드를'10 : 00 : 00'과'as '부분으로 제동해야합니다. 문자 (10:00:00)'등. 어느 쪽이든,'library (data.table); as.ITime ("23 : 50 : 21") % in (as.ITime ("10:00:00") : as.ITime ("11:00:00")) –

답변

0

,

df$sign_in <- as.POSIXct(df$sign_in,format="%H:%M:%S") 

후 일부

,

df[df$sign_in > as.POSIXct("10:00:00", format="%H:%M:%S") & 
    df$sign_in < as.POSIXct("11:00:00", format="%H:%M:%S"), ] 
관련 문제