2012-02-02 5 views
0

나는 서버 이름, 날짜, CPU, 메모리를 헤더로 가지는이 거대한 데이터 프레임을 가지고 있습니다. 여러 개의 서버 이름이 있습니다.R 데이터 프레임에서 특정 행을 선택

 Hostname    Date  5 60 61 CPUAVG CPUAVG+Sev CPUMaximum MemoryAVG 
1 server1 2012-01-29 01:00:00 23.79 NA NA 2.33  0.72  2.33  23.76 
2 server1 2012-01-29 02:00:00 23.91 NA NA 2.86  2.38  2.86  23.82 
3 server1 2012-01-29 03:00:00 25.65 NA NA 6.25  9.59  6.25  24.85 
4 server2 2012-01-29 04:00:00 26.30 NA NA 18.41  31.09  18.41  25.87 
5 server3 2012-01-29 05:00:00 24.33 NA NA 1.92  0.42  1.92  24.24 
6 server3 2012-01-29 06:00:00 24.40 NA NA 2.65  1.79  2.65  24.31 

답변

3

를 체크 아웃 '집합'명령 : 나는 날짜 열을 기준으로 특정 서버 이름 순서를 선택하고이 데이터 프레임의 작은 하위 집합 시간에 심각한 그래프

을 만들 수 있도록하고 싶습니다.

thisServer <- subset (servers, Hostname="server1") 

는 그런 다음 당신은 거기에서 플롯 할 수 있습니다 행

thisServerSorted <- thisServer[order(thisServer$Date),] 

를 주문합니다.

+3

당신은 또한 직접 하위 집합을 할 수 있습니다 :'servers [servers $ Hostname == 'server1',]' – Justin

+0

고맙습니다. 대용량 데이터 세트가 있고 날짜 별 개별 서버 이름 순서를 자동으로 검색해야하는 경우 하나의 차트에 그래프를 모두 그려야하는 경우 어떻게해야합니까? –

+0

"큰"은 다른 사람들에게 다른 것을 의미합니다. 당신이 방금 몇 GB인지, 얼마나 많은 행과 열 또는 그와 비슷한 것을 말하면 정말 도움이 될 것입니다. –

2
#convert Date to a date field (if needed) 
library(lubridate) 
servers$Date <- ymd_hms(servers$Date) 
#select the servers you need 
SelectedServers <- subset(servers, Hostname %in% c("server1", "server3")) 
library(ggplot2) 
#no need for sorting with ggplot2 
ggplot(SelectedServers, aes(x = Date, y = CPUAVG, colour = Hostname)) + geom_line() 
ggplot(SelectedServers, aes(x = Date, y = CPUAVG)) + geom_line() + facet_wrap(~Hostname) 
관련 문제