2017-04-03 6 views
-1
input<-read. csv("aggregate. csv") 

csv로 보이는 같은 :R을 사용하여 데이터 프레임을 특정 값 범위의 열로 필터링하는 방법은 무엇입니까?

TimeStamp  Latency  Threads 
7:00.06 AM   20    19 
7:00.09 AM   28    18 
7:00.15 AM   26    19 
7:04:51 AM   45    20 
7:05.07 AM   05    23 
7:00.25 AM   15    24 
7:10.01 AM   24    25 
7:20.01 AM   35    50 
8:00:10 AM   05    51 
8:00:52 AM   50    10 
8:05:00 AM   12    09 
8:10:00 AM   100    01 

하지만이 직면하고있는 문제는 내가 TimeStamp 열로 사용자 입력을 제공하여 입력 dataframe을 필터링 할 수 있습니다. 콘솔이 물어야 함을 의미합니다. Enter your time range

이라고 가정합니다. bw 7:00:01 AM - 7:05:00 AM이라고 입력하면됩니다. 그런 다음 데이터 프레임을 필터링해야합니다. 출력은 다음과 같아야합니다.

TimeStamp  Latency  Threads 
7:00.06 AM   20    19 
7:00.09 AM   28    18 
7:00.15 AM   26    19 
7:04:51 AM   45    20 

가능합니까? 필터링 코드가 하드 코딩 되었기 때문에 여기에 게시했지만 사용자 입력이 필요합니다.

+0

참조입니다 가지고 – Zelazny7

+0

이 시도 readLine'하지만이 작동하지 않았다 가정 gsub

하여 형식을 사전 처리해야합니다 .. –

+0

수 u는 더 구체적입니다. 나는 사용자에게 입력을 요구했지만 데이터 프레임을 필터링하는 방법을 시도했습니다. –

답변

0

당신은 strptime 기능을 시도 할 수 있습니다 도와주세요. 문자를 날짜 - 시간 클래스 인 POSIXlt 객체로 전송합니다. 변형 후 time 1 < time 2 등으로 시간을 비교할 수 있습니다. 자세한 내용은 ?strptime을 참조하십시오.

또 하나의 귀찮은 점은 TimeStamp 열이 7:00.06 AM7:04:51 AM과 같은 여러 형식으로되어 있다는 것입니다. 당신은 아마 당신은? 당신의 입력 범위는`다음 lower에서 upper

input <- read.csv("C:/Users/s0043102/Desktop/test.csv",stringsAsFactors = FALSE) 
adj_TimeStamp <- gsub("\\.",":",input$TimeStamp) 
adj_TimeStamp <- strptime(adj_TimeStamp ,format="%H:%M:%S %p") 
lower <- strptime("7:00:01 AM",format="%H:%M:%S %p") 
upper <- strptime("7:05:00 AM",format="%H:%M:%S %p") 
output <- subset(input, adj_TimeStamp<=upper & adj_TimeStamp>=lower) 
output 

    TimeStamp Latency Threads 
1 7:00.06 AM  20  19 
2 7:00.09 AM  28  18 
3 7:00.15 AM  26  19 
4 7:04:51 AM  45  20 
6 7:00.25 AM  15  24 
+0

코멘트를 통해 이미 알아 냈기 때문에 입력을 얻기 위해 파트를 생략했습니다. – TooYoung