R реорганизация фрейма данных - PullRequest
1 голос
/ 02 февраля 2012

Я новичок в R, и я думаю, что мне нужно сделать, это выполнимо с функциями изменения формы, плавления и приведения.Я немного читал, но не могу понять, как это сделать.

У меня есть такой фрейм данных:

)
server1, 01/01/2012, Memory, 27.200000, 27.490000, 28.560000, 29.300000
server1, 01/01/2012, disk , 2.330000, 22.380000, 7.580000, 2.440000
server1, 01/01/2012, CPU 0.470000, 36.500000, 12.230000, 0.350000
server1, 01/01/2012, interface 2.330000, 22.380000, 7.580000, 2.440000

Мне нравится преобразовывать этот фрейм данных во что-то подобное, чтобы R мог легко прочитать и отобразить эти данные:

server1, 01/01/2012:01:00, 27.200000, 2.330000,0.470000, 2.330000  
server1, 01/01/2012:02:00, 27.49, 22.38, 36.50, 22.38
server1, 01/01/2012:03:00, 28.56, 7.58, 12.23, 7.58
server1, 01/01/2012:04:00, 29.30, 2.44, 0.35, 2.44
  1. объединение ExtractedDate с Hour1 (например, если в заголовке указано Hour1, дата извлечения должна быть «01.01.2012 01:00»

  2. превратить метрику в заголовок (заголовок должен быть: поместите почасовые данные в столбцы, а не в строки.

Может кто-нибудь помочь мне с этим?

update =======

играя с расплавом и кастом, мне кажется, я очень близко подхожу. Я выполнил следующие 3 команды:

 1. x <- data.frame(read.table("out.txt", sep=",", header=T))
 2. y <- melt(x, id=c("Hostname", "Date", "Met"))
 3. yy <- cast(y, Hostname + Date + variable ~ Mete)

мой вывод выглядит так:

     Hostname 

 1  server1  01/29/2012    Hour1       0.72       2.33     23.76
 2  server1  01/29/2012    Hour2       2.38       2.86     23.82
 3  server1  01/29/2012    Hour3       9.59       6.25     24.85
 4  server1  01/29/2012    Hour4      31.09      18.41     25.87
 5  server1  01/29/2012    Hour5       0.42       1.92     24.24
 6  server1  01/29/2012    Hour6       1.79       2.65     24.31

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что мне нужно объединить поле Дата и переменную. Например, поле даты в 1-й строке должно быть 29.01.2012, 01:00, вторая строка, 29.01.2012, 02:00 и т. Д.,если кто-то может помочь мне с этим, это было бы здорово.

1 Ответ

3 голосов
/ 02 февраля 2012

используйте что-то вроде gsub first:

yy$variable <- as.integer(gsub('Hour', '', yy$variable))

Затем переведите его в формат времени POSIX:

yy $ variable <- paste (yy $ variable, ': 00: 00', sep = '') </p>

Преобразование вашей даты в дату:

yy$Date <- as.Date(yy$Date, format='%m/%d/%Y')

Затем смешайте это:

yy$date_time <- as.POSIXct(paste(yy$Date, yy$variable))

Я предполагаю, что есть замечательный способ использовать пакет zoo, но я его совсем не знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...