2017-04-03 82 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列濾除輸入數據幀。意味着控制檯應該詢問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

看'?readLine' – Zelazny7

+0

嘗試,但它沒有工作.. –

+0

燦你更具體..我試過它提示用戶輸入,但如何過濾數據幀 –

回答

0

你可以試試strptime功能。它會將一個字符轉換成一個POSIXlt對象,它是一個Date-Time Classes。轉換後,您可以通過time 1 < time 2等比較時間。您可以通過?strptime找到更多詳細信息。

還有一件讓人煩惱的事情是,您的TimeStamp列有多種格式:7:00.06 AM7:04:51 AM。你可能需要通過gsub

預先處理的格式,假設你有你的輸入範圍從lowerupper,然後

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

相關問題