2017-04-03 85 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

相关问题